在分组数据框中用日期类型索引进行计算。

问题描述 投票:0回答:1

我有一个这样的数据集。

date_time       value
30.04.20 9:31   1
30.04.20 10:12  5
30.04.20 15:16  2
01.05.20 12:01  63
01.05.20 13:00  78
02.05.20 7:23   4
02.05.20 17:34  2
02.05.20 18:34  4
02.05.20 21:39  3458
03.05.20 9:34   77
03.05.20 14:54  4
03.05.20 16:54  7
04.05.20 15:24  35

我需要将一天内的记录进行分组,并计算出3天(day_before-today-next_day)期间的平均数,如下所示(想要的结果)。

    date    value
01.05.2020  3617
02.05.2020  3697
03.05.2020  3591

我写了开头的代码

import pandas as pd
df = pd.read_excel(...)
df['date'] = df['date_time'].dt.normalize()
df.groupby('date').sum()

这里的分组数据框看起来是这样的。

date    value
30.04.2020  8
01.05.2020  141
02.05.2020  3468
03.05.2020  88
04.05.2020  35

但我不能再往下看了 因为我不知道如何用简洁的 "大熊猫 "方式 得到想要的结果。请给我一些指点。

python pandas pandas-groupby
1个回答
1
投票

你几乎已经完成了你的工作,只需将这几行代码添加到你当前的解决方案中。

df_group = df.groupby('date').sum()
results = df_group.rolling(window=3, min_periods=3, center=True).sum()

print(results)
2020-04-30     NaN
2020-05-01  3617.0
2020-05-02  3697.0
2020-05-03  3591.0
2020-05-04     NaN

# retain only rows with values
print(results.dropna())
date              
2020-05-01  3617.0
2020-05-02  3697.0
2020-05-03  3591.0

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.