热线电话:13121318867

登录
2019-04-26 阅读量: 613
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。用途merge:

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

OUTPUT:

id ID Name

1 1 Tom

2 2 Dick

3 3 Harry

4 4 Mike

5 5 Sam

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据