【问题标题】:Pandas missing values : fill with the closest non NaN value熊猫缺失值:用最接近的非 NaN 值填充
【发布时间】:2017-06-27 14:27:35
【问题描述】:

假设我有一个带有多个连续 NaN 的 pandas 系列。我知道fillna 有几种填充缺失值的方法(backfillfill forward),但我想用最接近的非 NaN 值填充它们。这是我所拥有的示例:

s = pd.Series([0, 1, np.nan, np.nan, np.nan, np.nan, 3])

还有一个我想要的例子:

s = pd.Series([0, 1, 1, 1, 3, 3, 3])

有人知道我能做到吗?

谢谢!

【问题讨论】:

  • 我很困惑你是如何得到 2s 的 - 如果你想要最接近的非 NAN 值,那不是 1s 吗?
  • 该系列是否仅包含一个具有连续 NaN 的部分,还是可能有多个部分(例如 [0, 1, np.nan, np.nan, 2, np.nan, np.nan, 3])?
  • @a_guest 可以包含多个部分

标签: python pandas time-series nan fillna


【解决方案1】:

您可以将Series.interpolatemethod='nearest' 一起使用:

In [11]: s = pd.Series([0, 1, np.nan, np.nan, np.nan, np.nan, 3])

In [12]: s.interpolate(method='nearest')
Out[12]: 
0    0.0
1    1.0
2    1.0
3    1.0
4    3.0
5    3.0
6    3.0
dtype: float64

In [13]: s = pd.Series([0, 1, np.nan, np.nan, 2, np.nan, np.nan, 3])

In [14]: s.interpolate(method='nearest')
Out[14]: 
0    0.0
1    1.0
2    1.0
3    2.0
4    2.0
5    2.0
6    3.0
7    3.0
dtype: float64

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2018-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多