在 Pandas 数据框中附加日期时间行和前向填充数据

war*_*nry 3 python dataframe pandas

初学者熊猫/蟒蛇用户。我在 Pandas 数据框中使用 24 小时数据,但是通常在一天的最后几分钟没有数据。

我只需要将行附加到每个文件中,直到最后一个时间戳达到 23.59,然后用数据向前填充最后几分钟。所以这:

    19-12-2016 00:00    2   0.003232323
    ...
    19-12-2016 23:53    2   0.002822919
    19-12-2016 23:54    4   0.002822919
    19-12-2016 23:55    1   0.002822919
Run Code Online (Sandbox Code Playgroud)

变成:

    19-12-2016 00:00    2   0.003232323
    ...
    19-12-2016 23:53    2   0.002822919
    19-12-2016 23:54    4   0.002822919
    19-12-2016 23:55    1   0.002822919
    19-12-2016 23:56    1   0.002822919
    19-12-2016 23:57    1   0.002822919
    19-12-2016 23:58    1   0.002822919
    19-12-2016 23:59    1   0.002822919
Run Code Online (Sandbox Code Playgroud)

不幸的是,我为此使用的代码真的很长,我无法准确指出我可以在哪里修改它。

ℕʘʘ*_*ḆḽḘ 5

你可以:

reindex 您的数据作为

idx = pd.date_range('2016-12-19', periods=1440, freq='T')
df = df.reindex(idx)
Run Code Online (Sandbox Code Playgroud)

然后使用向前填充任何缺失值 df.mycol.ffill()

  • 这应该不起作用,因为它不会比数据帧中的最后一次延长时间。 (2认同)

Ted*_*rou 4

针对单个帧中多天数据的通用解决方案可能如下所示。获取开始日期和结束日期,然后reindex获取整个框架并填写缺失的值。

start = df.index.min().date() 
end = df.index.max().date() + pd.Timedelta(1, 'D')
df.reindex(pd.date_range(start, end, freq='T', closed='left')).fillna(method='ffill')
Run Code Online (Sandbox Code Playgroud)

  • 你在开玩笑吧伙计,这是我的解决方案 (2认同)