【问题标题】:add column from a dataframe to another dataframe with same rows将数据框中的列添加到具有相同行的另一个数据框中
【发布时间】:2021-02-25 13:41:30
【问题描述】:

我有一个包含 30 000 行的数据框 (df)

id     Name     Age
 1     Joey     22
 2     Anna     34
 3     Jon      33
 4     Amy      30
 5     Kay      22

另一个包含相同列但缺少一些 ID 的数据框 (df2)

id     Name     Age    Sport
       Jon      33     Tennis
 5     Kay      22     Football
      Joey      22     Basketball
 4     Amy      30     Running 
      Anna      42     Dancing

我希望缺失的 ID 以对应的名称出现在 df2 中

df2:

 id     Name     Age    Sport
 3     Jon      33     Tennis
 5     Kay      22     Football
 1     Joey      22     Basketball
 4     Amy      30     Running 
 2    Anna      42     Dancing

有人可以帮忙吗?我是熊猫和数据框的新手

【问题讨论】:

    标签: python-3.x pandas dataframe csv


    【解决方案1】:

    您可以将.map.fillna 一起使用

    df2['id'] = df2['id'].replace('',np.nan,regex=True)\
                         .fillna(df2['Name'].map(df1.set_index('Name')['id'])).astype(int)
    
    
    print(df2)
    
       id  Name  Age       Sport
    0   3   Jon   33      Tennis
    1   5   Kay   22    Football
    2   1  Joey   22  Basketball
    3   4   Amy   30     Running
    4   2  Anna   42     Dancing
    

    【讨论】:

    • @ShubhamSharma 谢谢!我可以得到您对this 帖子的反馈吗?
    【解决方案2】:

    首先,根据您的键使用 pd.merge 连接两个数据框。我想在这种情况下,键是“姓名”和“年龄”。然后替换 df2 中的空 id 值,使用 np.where.isnull() 查找空值。

    df3 = pd.merge(df2, df1, on=['name', 'age'], how='left')
    df2['id'] = np.where(df3.id_x.isnull(), df3.id_y, df3.id_x).astype(int)
    
        id  name    age sport
    0   1   Joey    22  Tennis
    1   2   Anna    34  Football
    2   3   Jon     33  Basketball
    3   4   Amy     30  Running
    4   5   Kay     22  Dancing
    

    【讨论】:

    • 感谢您的回答。但我的很多行仍然是“nan”。它没有填满我所有的行
    • df2 中的每一行是否都有 df1 中的 ID?
    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2016-02-03
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多