为了账号安全,请及时绑定邮箱和手机立即绑定

如果同一列在另一个数据框中,熊猫会从一个数据框中获取特定列

如果同一列在另一个数据框中,熊猫会从一个数据框中获取特定列

缥缈止盈 2022-07-26 10:26:51
对于我的生活,我无法弄清楚如何实施以下解决方案:假设我有一个名为df1的数据框   ID  Name  Gender   0   Bill    M   1   Adam    M   2   Kat     F   1   Adam    M然后我有另一个名为df2的数据框   ID  Name   Age   5as   Sam  34   1as   Adam 64   2as   Kat  50我要做的就是检查来自df1的ID是否在df2的ID中,如果是,请抓住相应的Age列并将其附加到df1。理想解决方案:   ID  Name  Gender  Age   0   Bill    M   1   Adam    M     64   2   Kat     F     50   1   Adam    M     64我已经实现了以下解决方案,起初我认为它有效,但意识到它在 df 末尾缺少匹配很多值。不确定是因为我写的内容还是我的 CSV 文件太大。y_list = df2.ID.dropna().unique()for x in df1.ID.unique():   if x in y_list:        df1.loc[df1.ID == x, 'Age'] = df2.Age任何帮助表示赞赏!
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

这是你可以做的


df3 = df1.join(df2.set_index('ID'), on='ID', lsuffix='_left')

如果您想加入“ID”列。

但是,如果您希望加入“姓名”,您可以更改 on=“姓名”。另一种选择是使用合并,


df1.merge(df2, on='Name', how='left')

输出


    ID  Name_x  Gender  Name_y  Age

0   0   Bill    M   NaN NaN

1   1   Adam    M   Adam    64.0

2   2   Kat F   Kat 50.0

3   1   Adam    M   Adam    64.0

这是使用时的输出caller.set_index('ID').join(other.set_index('ID'), lsuffix='_left')


    Name_left   Gender  Name    Age

ID              

0   Bill    M   NaN NaN

1   Adam    M   Adam    64.0

1   Adam    M   Adam    64.0

2   Kat F   Kat 50.0


查看完整回答
反对 回复 2022-07-26
?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可以执行以下操作


name_age_dict = dict(zip(df2['Name'], df2['Age']))

df1['Age'] = df1['Name'].map(name_age_dict).fillna('')

另一种方法


df1['Age'] = df1['Name'].map(df2.set_index('Name')['Age']).fillna('')

输出


    ID  Name    Gender  Age

0   0   Bill    M   

1   1   Adam    M       64

2   2   Kat     F       50

3   1   Adam    M       64


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信