【问题标题】:How do I fill na values in a column with the average of previous non-na and next non-na value in pandas?如何用熊猫中前一个非 na 和下一个非 na 值的平均值填充列中的 na 值?
【发布时间】:2021-11-24 01:55:54
【问题描述】:

原始表:

Column A
5
nan
nan
15

新表:

Column A
5
10
10
15

【问题讨论】:

  • 对于这个具体的例子:df.fillna(df.mean())

标签: python pandas dataframe data-preprocessing


【解决方案1】:

一个选项可能如下(使用fillna 两次(使用选项ffillbfill)然后对它们取平均值):

import pandas as pd
import numpy as np

df = pd.DataFrame({'x': [np.nan, 5, np.nan, np.nan, 15]})
filled_series = [df['x'].fillna(method=m) for m in ('ffill', 'bfill')]
print(pd.concat(filled_series, axis=1).mean(axis=1))
# 0     5.0
# 1     5.0
# 2    10.0
# 3    10.0
# 4    15.0

如您所见,即使nan 发生在开头或结尾,它也有效。

【讨论】:

    猜你喜欢
    • 2016-10-03
    • 2021-08-03
    • 2020-04-14
    • 2021-11-24
    • 2020-06-08
    • 2016-03-12
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多