有很多类似的问题,我都尝试过,但是它们并没有按照我希望的那样工作。让我解释一下:
我有两个数据帧df1
和df2
。 df1
的形状为(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
中的df2
和id
值。
答案 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