合并重叠数据
在处理数据的过程中,当一个DataFrame对象中出现了缺失数据,而这些缺失数据我们希望可以使用其他DataFrame对象中的数据填充,这时可以通过combine_first()方法为缺失数据填充。
combine_first()方法的语法格式如下:
combine_first(other)
上述方法中只有一个参数other,该参数用于接收填充缺失值的DataFrame对象。
假设现在有left表与right表,其中left表中存在3个缺失的数据,而right表中的数据是完整的,并且right表与left表有相同的索引名,此时我们可以使用right表中的数据来填充left表的缺失数据,得到一个新的result表,如图1所示。
图1 合并重叠数据
需要注意的是,尽管right表中的行索引与left表的行索引顺序不同,当用right表的数据替换left表的NaN值时,替换数据与缺失数据的索引位置仍然是相同的。例如,left表中位于第0行第A列的“NaN”需要使用right表中相同位置的数据“C1”来替换。
为了让大家更好地理解,接下来,编写代码实现上述合并重叠数据的过程,即使用right表的数据替换left表的缺失数据,具体代码如下。
In [32]: import pandas as pd
import numpy as np
from numpy import NAN
left = pd.DataFrame({'A': [np.nan, 'A1', 'A2', 'A3'],
'B': [np.nan, 'B1', np.nan, 'B3'],
'key': ['K0', 'K1', 'K2', 'K3']})
right = pd.DataFrame({'A': ['C0', 'C1','C2'],'B': ['D0', 'D1','D2']},
index=[1,0,2])
# 用right的数据填充left缺失的部分
left.combine_first(right)
Out[32]:
A B key
0 C1 D1 K0
1 A1 B1 K1
2 A2 D2 K2
3 A3 B3 K3
需要强调的是,使用combine_first()方法合并两个DataFrame对象时,必须确保它们的行索引和列索引有重叠的部分。