【问题标题】:Fill NaNs in a column with the column max用列 max 填充列中的 NaN
【发布时间】:2019-02-03 04:39:14
【问题描述】:

我的数据:

df = pd.DataFrame({'a':[2, np.nan, 2, np.nan],
                   'b':[np.nan, np.nan, 3, 3]})

a      b
2      np.nan
np.nan np.nan
2       3
np.nan  3

想要得到

a      b
2      3
2      3
2      3
2      3

尝试前向填充

df = df.ffill()
a      b
2      np.nan
2      np.nan
2      3
2      3

尝试了前向填充,但因为我在b 中将nan 作为第一行,所以我在b 中仍然得到了nan。我怎样才能去填充每一行的唯一值呢? (列都有重复值或 np.nan)

【问题讨论】:

    标签: python pandas nan


    【解决方案1】:

    链接bfill 呼叫:

    df.ffill().bfill()
    
         a    b
    0  2.0  3.0
    1  2.0  3.0
    2  2.0  3.0
    3  2.0  3.0
    

    如果可能的话,要让 pandas 向下转换为 ints,请使用

    df.ffill().bfill(downcast='infer')
    
       a  b
    0  2  3
    1  2  3
    2  2  3
    3  2  3
    

    另一个选项是fillnamax

    df.fillna(df.max(), downcast='infer')
    
       a  b
    0  2  3
    1  2  3
    2  2  3
    3  2  3
    

    max 忽略 NaN,因此是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 2020-08-15
      • 2019-05-18
      • 1970-01-01
      相关资源
      最近更新 更多