【问题标题】:pandas asfreq() function is not showing the resultspandas asfreq() 函数未显示结果
【发布时间】:2019-10-15 05:53:04
【问题描述】:

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

我指的是这篇文章中的说明,但事实证明代码在我的情况下表现不佳。 Find gaps in pandas time series dataframe sampled at 1 minute intervals and fill the gaps with new rows

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 

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

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    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
    

    【讨论】:

    • 嘿@Andy L. 非常感谢。看起来它正在工作。我有最后一个问题。我不确定为什么必须使用 T。在格式 (format='%m/%d/%Y %H:%M') 中,我没有在任何地方声明。
    • @Verbamore: format 使用 python 的 strftime 格式化指令。而 pandas 时间序列中的频率字符串是 pandas Offset aliases。它们不一样。您可以阅读此文档了解更多信息:pandas.pydata.org/pandas-docs/stable/user_guide/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2021-04-14
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多