熊猫:使用`DataFrame.fillna`填充`DataFrame.add`的缺失值?

时间:2018-10-03 15:13:58

标签: python pandas dataframe

通过DataFrame.add(fill_value=my_value)方法,您可以添加到数据帧,并选择一个单个my_value来替换丢失的值。

另一方面,DataFrame.fillna在填充缺失值方面提供了更大的灵活性(例如,允许您将尾随的缺失值填充到每列的最后一个有效值),但是只能应用于已经存在的数据帧。

使用DataFrame.fillna时,有没有办法使用DataFrame.add之类的东西来填充两个数据帧期间的缺失值,而不是单个值?

例如我想执行

import pandas as pd
A = pd.Series(data=[1,2,3], index=['a', 'b', 'c'])
B = pd.Series(data=[1,2,3], index=['b', 'c', 'd'])
frame = pd.DataFrame({'a': A, 'b': B})
frame = frame.fillna(method='pad') # pad trailing missing values with last valid ones, column-wise
frame = frame.fillna(value=0) # pad (remaining) leading values with zeros
result = frame.sum(axis=1)

但使用A.add(B, unknown_params)。如果不可用,是否有其他方法比我目前正在执行的方法更有效?

1 个答案:

答案 0 :(得分:2)

不存在执行所有操作的通用魔术方法。您可以创建一个函数,利用方法链接并使用pd.DataFrame.pipe使代码更清晰:

def fill_sum(df):
    return df.fillna(method='pad').fillna(0).sum(1)

frame = pd.DataFrame({'a': A, 'b': B})

frame = frame.pipe(fill_sum)

print(frame)

a    1.0
b    3.0
c    5.0
d    6.0
dtype: float64