gpt4 book ai didi

python - 如何在 Pandas 中使用 Apply 函数来应用/lambda?

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:45 25 4
gpt4 key购买 nike

我是 Pandas 的初学者,我正在尝试以下操作:

我有两个数据集:

df5 = pd.DataFrame({"id":[1,2,3,4,5]})
df6 = pd.DataFrame({"ID":[1,2,3,4,5] ,"Name":["Tom","Dick","Harry","Mike","Sam"]})

我想使用 apply 或 lambda apply 将 df5 中的 id 替换为 df6 中的实际名称。我尝试过以下方法:

def extract_name2 (x):
name = df6[df6["ID"] == x]["Name"]
return name
df5["id"].apply(extract_name2)

这是我的输出:

Out[120]: 
0 1 2 3 4
0 Tom NaN NaN NaN NaN
1 NaN Dick NaN NaN NaN
2 NaN NaN Harry NaN NaN
3 NaN NaN NaN Mike NaN
4 NaN NaN NaN NaN Sam

我也尝试过:

df5["id"].apply(lambda x: df6[df6["ID"] == x]["Name"])

但结果相同

有人可以帮助我吗?

最佳答案

当您说df6[df6["ID"] == x]时,输出是根据您给出的条件过滤的数据帧。

您需要指定您需要过滤数据帧的'Name' 列中的第一个单元格值。

这将为您提供所需的结果:

df5['id'].apply(lambda x: df6[df6['ID'] == x]['Name'].iloc[0])

更新:

您也可以在不使用apply的情况下执行此操作。使用合并:

pd.merge(df5, df6, how='left', left_on='id', right_on='ID')

输出:

id  ID  Name
1 1 Tom
2 2 Dick
3 3 Harry
4 4 Mike
5 5 Sam

关于python - 如何在 Pandas 中使用 Apply 函数来应用/lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55148462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com