【问题标题】:Groupby date and process by a given time interval using pandas使用熊猫按给定时间间隔分组日期和处理
【发布时间】:2021-02-03 08:31:59
【问题描述】:

我有一个包含几个月数据的大型数据框,我需要在 31 天的每一天处理 [09:00:00-11:59:59] 之间的数据。

dataframe(df)的结构如下:

id,date,value
5,2012-03-01 00:00:00,0
2,2012-03-01 00:00:00,0
3,2012-03-01 00:00:00,0
1,2012-03-01 00:00:00,0
4,2012-03-01 00:00:00,0

我可以使用以下方法轻松过滤 [09:00:00 - 11:59:59] 之间的数据帧:

indx = pd.DatetimeIndex(df['date'])
df1 = df.iloc[indx.indexer_between_time('09:00:00','11:59:59')]

我还可以使用以下方法对每天的数据框进行分组:

df['date'] = pd.to_datetime(df['date'])
df_grouped = df.groupby([df['date'].dt.date])
df_list = []
for idx, data in df_grouped:
    df_list.append(data)

我怎样才能将它们联系在一起以获得仅包含 [09:00:00-11:59:59] 之间数据的数据框列表。目的是循环使用 [09:00:00-11:59:59] 的数据的数据帧,并将它们中的每一个传递给某个函数以进行进一步处理:

【问题讨论】:

    标签: python pandas numpy dataframe time-series


    【解决方案1】:

    你已经有 df1,现在 groupby 在上面:

    df_grouped = df1.groupby(pd.to_datetime(df1['date']).dt.date) )
    df_list = [d for _,d in df_grouped]
    

    【讨论】:

    • 非常感谢,但是如何将这些 df_list 项中的每一个作为单独的数据帧传递到函数中以供进一步处理。
    • df_list 中的每个项目都是一个数据框,您可以将其传递给您的函数 for d in df_list: func(d) 但是,有一个问题是这些是原始 df 的切片,所以您不要不想修改它们。
    猜你喜欢
    • 2014-11-17
    • 2020-02-21
    • 2016-07-05
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2016-10-06
    相关资源
    最近更新 更多