import pandas as pd
# 创建示例DataFrame df_a和df_b
df_a = pd.DataFrame({
'a': [1, 2, 3, 4, 5]
})
df_b = pd.DataFrame({
'b': [1, None, 3, None, 5]
})
# 假设两个DataFrame有相同的索引,或者你可以根据某个列来对齐它们
# 这里我们假设它们已经有相同的索引
# 使用combine_first方法来填补df_b中b列的缺失值,用df_a中a列的值来填补
df_b['b'] = df_b['b'].combine_first(df_a['a'])
print(df_b)
在这个例子中,df_b
中的b
列原先有两个None
值,它们被df_a
中a
列对应的值填补了。
如果你的两个DataFrame没有相同的索引,但是它们有一个共同的列可以用来对齐(比如“合同编号”),你可以首先使用pd.merge()
或者set_index()
来对齐它们,然后再进行值的填补。
# 假设df_a和df_b都有一个共同的列'合同编号'来对齐
df_a = pd.DataFrame({
'合同编号': ['A001', 'A002', 'A003'],
'a': [1, 2, 3]
})
df_b = pd.DataFrame({
'合同编号': ['A001', 'A002', 'A003'],
'b': [1, None, 3]
})
# 使用'合同编号'列来合并df_a和df_b
merged_df = pd.merge(df_b, df_a[['合同编号', 'a']], on='合同编号', how='left')
# 使用combine_first来填补b列的缺失值
merged_df['b'] = merged_df['b'].combine_first(merged_df['a'])
# 如果需要,删除额外的列'a'
merged_df.drop(columns=['a'], inplace=True)
print(merged_df)
这样就可以根据“合同编号”列来填补df_b
中b
列的空白格了。