首页 > 解决方案 > python - 如何用python中其他数据框中的条目替换一个数据框中缺少的列条目?

问题描述

有两个数据框 df1 和 df2。df1中的两列分别是A和B。B中有缺失值。对于df1中B中的缺失值,df2中有条目,其列为A和B(df2中的记录是B中缺失的记录)仅 df1)。我想用 df2 中 B 的相应条目替换 df1 中 B 的缺失值。

编辑 :

df1 = pd.DataFrame({'A': [1,2,3,4,5,6,7,8], 'b': [101,123,np.nan,678,np.nan,672,np.nan,786], 'C': ['ABC', 'DER', 'ERC','DFE','HJI','JKL','SDH',np.Nan]})

df2 = pd.DataFrame({'A': [3,7], 'B': [563,785]})

所需的 O/P:

op = pd.DataFrame({'A': [1,2,3,4,5,6,7,8], 'b': [101,123,563,678,np.nan,672,785,786], 'C': ['ABC', 'DER', 'ERC','DFE','HJI','JKL','SDH',np.Nan]})

标签: pythonpandasdataframereplace

解决方案


使用,pd.merge左合并数据框df1df2A,然后使用从列中的值Series.fillna填充列中的缺失值:bB

df = pd.merge(df1, df2, on='A', how='left')
df['b'] = df['b'].fillna(df.pop('B'))

结果:

# print(df)
   A      b    C
0  1  101.0  ABC
1  2  123.0  DER
2  3  563.0  ERC
3  4  678.0  DFE
4  5    NaN  HJI
5  6  672.0  JKL
6  7  785.0  SDH
7  8  786.0  NaN

推荐阅读