如何在熊猫中通过ID将数据框的列值替换为另一个数据框值

时间:2019-02-14 04:31:32

标签: python pandas dataframe

有很多类似的问题,我都尝试过,但是它们并没有按照我希望的那样工作。让我解释一下:

我有两个数据帧df1df2df1的形状为(10000,10)df2的形状为(6000,3)

示例df1

id      col1   col2    col3
sdfge    0       43     35
fgdge    0       34     353
dfgge   500     434     345
dsggh    43     34       345
bcbnn    23      0       86
gnncn    24      0       868
iopip    0       0       687

示例df2

id      col1   col2  
sdfge    3453     453  
fgdge    23      345   
dsggh    44     357   
iopip    0      886  

现在,我想通过使用col1中的值(由col2来替换df1中的df2id值。

1 个答案:

答案 0 :(得分:1)

使用map

df1['col1'] = (df1['id'].map(df2.set_index('id')['col1'])
                        .fillna(df1['col1'], downcast='infer'))
df1['col2'] = (df1['id'].map(df2.set_index('id')['col2'])
                        .fillna(df1['col2'], downcast='infer'))

print(df1)
      id  col1  col2  col3
0  sdfge  3453   453    35
1  fgdge    23   345   353
2  dfgge   500   434   345
3  dsggh    44   357   345
4  bcbnn    23     0    86
5  gnncn    24     0   868
6  iopip     0   886   687