将字典值映射到新的 Pandas 列
处理 Pandas 数据帧时,可能存在需要添加基于新列的情况基于现有列的映射值。为了实现这一点,一个常见的误解是使用 equal 函数作为新列分配中的参数。但是,这会导致错误,因为 equal 不是可调用函数。
正确的方法是使用 Pandas 地图函数。基于字典中的映射值添加新列的语法如下:
df["new_column"] = df["existing_column"].map(mapping_function)
mapping_function 是一个接受现有列的值并返回所需映射值的函数。在这种情况下,映射函数是一个 lambda 函数,它利用字典 equal 来检索相应的映射值:
mapping_function = lambda x: equiv[x]
通过利用此方法,数据帧 df 将使用新列“B”进行更新包含基于提供的字典的“A”列中的映射值:
import pandas as pd equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
输出:
A B 0 7001 1 1 8001 2 2 9001 3
此方法无缝处理密钥不存在于字典,如下例:
equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001, 10000]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
输出:
A B 0 7001 1 1 8001 2 2 9001 3 3 10000 NaN
以上是如何将字典值映射到新的 Pandas 列?的详细内容。更多信息请关注PHP中文网其他相关文章!