首页 > 解决方案 > pandas asfreq() 函数未显示结果

问题描述

我试图找到时间序列(30 分钟间隔)中的空白并用 NaN 填充它们。

我指的是这篇文章中的说明,但事实证明代码在我的情况下表现不佳。 查找以 1 分钟间隔采样的 pandas 时间序列数据帧中的空白,并用新行填补空白

import pandas as pd
from datetime import datetime
df=pd.read_csv('example1.csv')
df.head(5)
Date & Time KW
0   8/27/2019 23:30 0.016
1   8/27/2019 23:00 0
2   8/27/2019 22:30 0.016
3   8/27/2019 22:00 0.016
4   8/27/2019 21:30 0
df['Date & Time'] = pd.to_datetime(df['Date & Time'], format='%m/%d/%Y %H:%M')
df=df.set_index('Date & Time').asfreq('30M')
df.head()
    KW
Date & Time 

如您所见,输出为空白,预计我会看到值。我不确定我做错了什么。

标签: pythonpython-3.xpandas

解决方案


M是月份,您的“日期和时间”列正在减少。你需要使用T负值

试试这个样本

df:

       Date & Time     KW
0  8/27/2019 23:30  0.016
1  8/27/2019 23:00  0.000
2  8/27/2019 22:30  0.016
3  8/27/2019 22:00  0.016
4  8/27/2019 21:30  0.000
5  8/27/2019 19:30  0.000

df.set_index('Date & Time').asfreq('-30T')

Out[412]:
                        KW
Date & Time
2019-08-27 23:30:00  0.016
2019-08-27 23:00:00  0.000
2019-08-27 22:30:00  0.016
2019-08-27 22:00:00  0.016
2019-08-27 21:30:00  0.000
2019-08-27 21:00:00 NaN
2019-08-27 20:30:00 NaN
2019-08-27 20:00:00 NaN
2019-08-27 19:30:00  0.000

推荐阅读