python - 如何根据其他数据框替换一个 Pandas 数据框列值?

标签 python pandas dataframe

我有两个数据框。 df1df2。这是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

请注意,col1df1df2 中的主键。我尝试通过映射值来做到这一点,但我无法使其工作。

这是一个用于轻松检查这些数据帧的 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)

最佳答案

您可以mapfillna:

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/

相关文章:

python - 同时运行 kivy 和无限循环

python - 删除具有特定字符串的行

python - 如何根据 pandas 中其他列的条件创建新列?

python - 如何仅显示值大于 x 的列

pandas 将带有数字和 nans 的对象转换为整数或 float

Python文件复制删除原始文件

python - 如何先按递减值排序,然后按第二个值递增排序

python - .remove 不删除给定的字符串

python - pandas 在列的子集上应用自定义函数

python - 如何在数据框列上使用 geopy vicenty 距离?