代码之家  ›  专栏  ›  技术社区  ›  blue_note

熊猫:使用“DataFrame.fillna”填充“DataFrame.add”缺少的值?

  •  0
  • blue_note  · 技术社区  · 6 年前

    这个 DataFrame.add(fill_value=my_value) 方法允许您添加到数据帧,并选择 价值 my_value 用于替换缺少的值。

    DataFrame.fillna

    有没有办法用像 数据框.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 回复  |  直到 6 年前
        1
  •  2
  •   jpp    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