我有两个数据框。 df1
和 df2
。这是df1
col1 col2 col3
0 1 12 100
1 2 34 200
2 3 56 300
3 4 78 400
这是df2
的内容
col1 col2 col3
0 2 1984 500
1 3 4891 600
我想要这个最终数据框:
col1 col2 col3
0 1 12 100
1 2 1984 200
2 3 4891 300
3 4 78 400
请注意,col1
是 df1
和 df2
中的主键。我尝试通过映射值来做到这一点,但我无法使其工作。
这是一个用于轻松检查这些数据帧的 MCVE:
import pandas as pd
d = {'col1': ['1', '2','3','4'], 'col2': [12, 34,56,78],'col3':[100,200,300,400]}
df1 = pd.DataFrame(data=d)
d = {'col1': ['2','3'], 'col2': [1984,4891],'col3':[500,600]}
df2 = pd.DataFrame(data=d)
print(df1)
print(df2)
d = {'col1': ['1', '2','3','4'], 'col2': [12, 1984,4891,78],'col3':[100,200,300,400]}
df_final = pd.DataFrame(data=d)
print(df_final)
最佳答案
您可以map
和fillna
:
df1['col2'] = (df1['col1']
.map(df2.set_index('col1')['col2'])
.fillna(df1['col2'], downcast='infer')
)
输出:
col1 col2 col3
0 1 12 100
1 2 1984 200
2 3 4891 300
3 4 78 400
关于python - 如何根据其他数据框替换一个 Pandas 数据框列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73747324/