【问题标题】:Replace NaNs with values from X rows earlier or later in pandas dataframe将 NaN 替换为 pandas 数据框中早晚 X 行的值
【发布时间】:2018-09-19 13:43:20
【问题描述】:

我有一个数据框,其中每一行代表连续的一天,列代表总用电量。有一些 NaN 值缺少数据:

     ELECTRICITY
0    10
1    15
2    17
3    12
4    15
5    16
6    22
7    8
8    NaN
9    16
10   13

由于此示例中的用电量主要受星期几的影响,因此我想将所有 NaN 替换为前后 7 行的值。

我调查了以下内容但没有成功:

  1. fillna:只允许我用特定值或直接相邻的值替换
  2. 插值:只允许我用紧邻值的平均值替换
  3. 替换:似乎允许使用设定值进行条件替换

感谢您的帮助。

【问题讨论】:

  • 欢迎来到 SO。您能否提供更完整的数据示例?您的数据中是否有可以利用的日期列,或者是否始终假定数据是有序的?你还说你想替换“早晚 7 行”的值。在什么情况下,您需要 7 天前的值以及 7 天后的值?在您提供的数据中为NaN 提供您期望的输出会很有帮助。
  • @vealkind 感谢您的澄清问题。我试图尽可能简化示例,以便我的数据集的特质不会使问题与其他人无关 - 也许我走得太远了!以下是要求的澄清。由于我是 SO 新手,请告知我是否应该更新问题:(1)是否有日期列:索引是具有每小时时间的 DatetimeIndex(2)早/晚 7 行时:替换为早前 7 行如果前 7 行不是 NaN,则 7 天后

标签: python pandas


【解决方案1】:

使用fillnashift

df.fillna(df.shift(7))

    ELECTRICITY
0          10.0
1          15.0
2          17.0
3          12.0
4          15.0
5          16.0
6          22.0
7           8.0
8          15.0
9          16.0
10         13.0

【讨论】:

  • 这正是我所需要的。谢谢。
猜你喜欢
  • 2021-06-29
  • 2022-10-05
  • 2021-06-09
  • 2018-11-08
  • 1970-01-01
  • 2012-10-29
  • 2021-11-20
相关资源
最近更新 更多