【问题标题】:fill NaN values by previous value用前一个值填充 NaN 值
【发布时间】:2022-07-22 23:56:58
【问题描述】:

我有一个带有一些 NaN 的 DataFrame:

>>> import pandas as pd
>>> df = pd.DataFrame([[111, 222, 'apple'], [888, 444, 'pear'], [666, 777, 'pineapple'] [None, 444, None]])
>>> df
    0     1     2
0   111   222   apple
1   888   444   pear
2   666   777   pineapple
3   NaN   444   NaN

我也想得到这样的df

    0     1     2
0   111   222   apple
1   888   444   pear
2   666   777   pineapple
3   888   444   pear

【问题讨论】:

  • 如果一行都是 NaN 会发生什么?
  • "888" 和 "pear" 不是以前的值。你什么意思?
  • 为什么第三列会包含 NaN? ...它在任何其他行中都不包含数字
  • 没有完全为 NaN 值的行。当我谈论上一个值时,我的意思是没有 NaN 的行的“1”列的值等于有 NaN 的行的“1”列的值

标签: python pandas dataframe fillna


【解决方案1】:

只需将ffill()groupby 一起使用

>>> df.assign(**df.groupby(1, as_index=False).ffill())

       0    1          2
0  111.0  222      apple
1  888.0  444       pear
2  666.0  777  pineapple
3  888.0  444       pear

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-09-03
    • 2019-12-26
    相关资源
    最近更新 更多