繁体   English   中英

如何在Python中的熊猫中对指定时间段内的日期时间进行分组并将聚合function应用于日期时间?

[英]How to group by and apply aggregate function to datetime for a specified period in panda in Python?

我有一个包含 2 列的数据框。

第一列是每分钟的时间戳。 第二列是一个数字。

我要做的就是将第一列更改为每 30 分钟的时间戳,以及从第 2 列开始在该期间内的 30 个数字的总和。

示例数据框

每分钟都展示了力量,但我想每 30 分钟总结一次。

使用 pandas/Series.resample

如果将时间戳设置为索引, Series.resample可以为您提供帮助; 然后使用series.resample('30T').sum()

手动版

您可以在要保留的系列上使用cumsum

然后 select 只有每 30 个位置的索引(np.arange(0,len(df),30)。

然后向后迭代 dataframe 并在第 n 行减去在第 n-1 行找到的总和,以仅保留最后 30 分钟的值。 迭代不是很有效,但由于您的数据集是 1M 行,如果您每 30 行取 1 行,它应该很快(33,333 次迭代)。

df['cumsum'] = df["Power_kw"].cumsum()
df_30_min = df.iloc[np.arange(0, len(df), 30)].copy()

for i in range(len(df_30_min), 1, -1):
    df_30_min.iloc[i-1, df_30_min.columns.get_loc('B')] -= df_30_min.iloc[i-2, df_30_min.columns.get_loc('B')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM