看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.DataFrame.combine_first
方法用于将两个数据集(通常是 DataFrame
或 Series
)进行合并,其中优先使用第一个数据集的值,如果第一个数据集中有缺失值(NaN),则使用第二个数据集对应位置的值进行填充。
将null元素更新为其他元素中相同位置的值。通过用另一个DataFrame中的非空值填充一个DataFame中的空值来组合两个DataFrame对象。生成的DataFrame的行索引和列索引将是两者的并集。在调用first.combine_first(second)时,生成的数据帧包含“第一个”数据帧值,并覆盖第二个值,其中first.loc[index,col]和second.loc[index,col]都不缺少值。
Series 时用“other”中相同位置的值更新null元素。通过用另一个Series的非空值填充一个Series中的空值来组合两个Series对象。结果索引将是两个索引的并集。
DataFrame.combine_first(other)
Series.combine_first(other)
DataFrame
或 Series
DataFrame
或 Series
),其中在有缺失值的地方用 other
对象中的值进行填充。combine_first
是非常有效的工具。combine_first
方法用另一个完整或部分完整的数据集进行补充。DataFrame:
df1 = pd.DataFrame({'A': [None, 0], 'B': [None, 4]})
df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
df1.combine_first(df2)
'''
A B
0 1.0 3.0
1 0.0 4.0
'''
# 如果空值的位置在其他文件中不存在,则空值仍然存在
df1 = pd.DataFrame({'A': [None, 0], 'B': [4, None]})
df2 = pd.DataFrame({'B': [3, 3], 'C': [1, 1]}, index=[1, 2])
df1.combine_first(df2)
'''
A B C
0 NaN 4.0 NaN
1 0.0 3.0 1.0
2 NaN 3.0 1.0
'''
Series:
s1 = pd.Series([1, np.nan])
s2 = pd.Series([3, 4, 5])
s1.combine_first(s2)
'''
0 1.0
1 4.0
2 5.0
dtype: float64
'''
如果空值的位置在其他文件中不存在,则空值仍然存在:
s1 = pd.Series({'falcon': np.nan, 'eagle': 160.0})
s2 = pd.Series({'eagle': 200.0, 'duck': 30.0})
s1.combine_first(s2)
'''
duck 30.0
eagle 160.0
falcon NaN
dtype: float64
'''
以下示例展示如何使用 pandas.DataFrame.combine_first
方法填充缺失值。
import pandas as pd
import numpy as np
# 构造示例数据
data1 = pd.DataFrame({
'A': [1, np.nan, 3, np.nan],
'B': [4, 5, np.nan, 7]
})
data2 = pd.DataFrame({
'A': [10, 20, 30, 40],
'B': [np.nan, 50, 60, np.nan]
})
print("data1:")
print(data1)
print("\ndata2:")
print(data2)
# 使用 combine_first 进行合并,填充缺失值
combined_data = data1.combine_first(data2)
print("\n合并后的数据:")
print(combined_data)
输出结果:
data1:
A B
0 1.0 4.0
1 NaN 5.0
2 3.0 NaN
3 NaN 7.0
data2:
A B
0 10 NaN
1 20 50.0
2 30 60.0
3 40 NaN
合并后的数据:
A B
0 1.0 4.0
1 20.0 5.0
2 3.0 60.0
3 40.0 7.0
在这个例子中,pandas.DataFrame.combine_first
方法用于将 data1
中的缺失值(NaN)用 data2
中相应位置的值进行填充。如果 data1
中的值不是缺失的,则保持原值。结果是一个包含所有非缺失值的完整 DataFrame。
更新时间:2024-08-14 16:46:10 标签:pandas python 合并