【问题标题】:Pandas get a specific column from one dataframe if the same column is in another dataframe [duplicate]如果同一列在另一个数据框中,熊猫会从一个数据框中获取特定列[重复]
【发布时间】:2020-05-27 14:24:36
【问题描述】:

对于我的一生,我无法弄清楚如何实施以下解决方案:

假设我有一个名为 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

感谢任何帮助!

【问题讨论】:

  • 您在 df2 中写入您的 ID 是否出错?
  • 跟进 Vishaka 的 cmets,请检查 ID 上的数据框。

标签: python pandas dataframe mapping


【解决方案1】:

你可以这样做

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

【讨论】:

  • 我想他们想要on="Name"
  • 谢谢,我都更新了,问题是在另一个数据帧中找到“ID”...
【解决方案2】:

你可以这样做

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

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 2023-04-03
    • 2018-08-03
    • 1970-01-01
    • 2021-08-31
    • 2022-01-25
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多