在python中,如何将一个数据帧中缺少的列条目替换为另一个数据帧中的条目?
有两个数据帧df1和df2。df1中的两列是A和B。B中缺少值。对于df1中B中缺少的值,df2中有条目,其列是A和B(df2中的记录仅是df1中B中缺少的记录)。我想用df2中相应的B条目替换df1中缺少的B值 编辑:在python中,如何将一个数据帧中缺少的列条目替换为另一个数据帧中的条目?,python,pandas,dataframe,replace,Python,Pandas,Dataframe,Replace,有两个数据帧df1和df2。df1中的两列是A和B。B中缺少值。对于df1中B中缺少的值,df2中有条目,其列是A和B(df2中的记录仅是df1中B中缺少的记录)。我想用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','S
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]})
使用,向左合并列A
上的数据帧df1
和df2
,然后使用从列b
中的值填充列b
中缺少的值:
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
使用,向左合并列A
上的数据帧df1
和df2
,然后使用从列b
中的值填充列b
中缺少的值:
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
请共享数据帧的示例和您需要的准确预期输出。如上所述,共享示例数据帧。除此之外,我认为您需要
df1.fillna(df2)
。当然..我已经更新了输入和输出示例。请共享数据帧示例和您需要的准确预期输出。如上所述,共享示例数据帧。除此之外,我认为您需要df1.fillna(df2)
。当然..我已经为响应更新了示例输入和输出hanks。但是在合并操作之后,我得到了太多的记录。那么,你能解释更多吗?根据你在问题中提供的数据,这应该有效。谢谢你的回答。但是在合并操作之后,我得到了太多的记录。那么,你能解释更多吗?根据你在问题中提供的数据,这应该是可行的。