向 Pandas DataFrame 添加映射列
使用 pandas 时,基于现有列添加具有映射值的新列可以是一项简单的任务。但是,某些方法可能会导致错误或困难。
一种常见的尝试是将映射值直接分配给新列:
<code class="python">df["B"] = equiv(df["A"])</code>
但是,这将失败,因为等效,表示字典,不是可调用函数。
另一种可能无法产生所需结果的方法是将 map 与 lambda 函数一起使用:
<code class="python">df["B"] = df["A"].map(lambda x: equiv[x])</code>
此表达式可能会引发 KeyError,除非字典键与列值完全匹配。
正确的解决方案
添加映射列的正确方法是直接将映射与字典一起使用:
<code class="python">df["B"] = df["A"].map(equiv)</code>
此方法将使用 equal 字典中的映射值创建一个新列 B。如果字典中不存在某个键,则相应的行将被分配 NaN。
示例
考虑以下 DataFrame:
<code class="python">df = pd.DataFrame({"A": [7001, 8001, 9001]}) equiv = {7001: 1, 8001: 2, 9001: 3}</code>
应用正确的映射将产生所需的结果:
<code class="python">df["B"] = df["A"].map(equiv) print(df) A B 0 7001 1 1 8001 2 2 9001 3</code>
以上是如何有效地将映射列添加到 Pandas DataFrame 中?的详细内容。更多信息请关注PHP中文网其他相关文章!