为了账号安全,请及时绑定邮箱和手机立即绑定

pandas:使用`DataFrame.fillna` 来填充`DataFrame.add

pandas:使用`DataFrame.fillna` 来填充`DataFrame.add

繁华开满天机 2021-07-02 15:07:40
该DataFrame.add(fill_value=my_value)方法允许你添加到数据帧,并选择一个单一的值my_value将用于替换缺失值。另一方面,它DataFrame.fillna为填充缺失值提供了更大的灵活性(例如,允许您用每列的最后一个有效值填充尾随缺失值),但只能应用于已经存在的数据帧。有没有什么方法可以在使用时DataFrame.fillna在添加两个数据帧期间使用类似的东西来填充缺失值DataFrame.add,而不是单个值?例如。我想执行相当于import pandas as pdA = 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-wiseframe = frame.fillna(value=0) # pad (remaining) leading values with zerosresult = frame.sum(axis=1)但使用A.add(B, unknown_params). 如果那不可用,有没有比我目前正在做的更有效的其他方法?
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

不存在执行所有操作的通用魔法方法。您可以创建一个函数,利用方法链并使用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


查看完整回答
反对 回复 2021-07-06
  • 1 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信