Pandas多索引DataFrame:在组内聚合子组



我有以下多索引DataFrame:

df = pd.DataFrame({
'cluster': [1, 1, 2, 1, 2, 2, 1, 3, 2],
'mark': [8, 5, 10, 20, 4, 1, 6, 4, 1],
'dt': ['2021-03-23', '2021-03-25', '2021-03-23', '2021-03-28', '2021-03-25', '2021-03-28', '2021-03-29', '2021-03-23', '2021-03-31']
})
df.set_index(['cluster', 'dt'], inplace=True)
df.sort_index(inplace=True)
df
标记簇dt1 2021-03-23 82021-03-25 52021-03-28 202021-03-29 62 2021-03-23 102021-03-25 42021-03-28 12021-03-31 13 2021-03-23 4

我想做的是生成每个索引组中每周子组的总和,类似

总标记集群开始日期星期1 2021-03-21 132021-03-28 262 2021-03-21 142021-03-28 23 2021-03-23 4

我知道如何根据日期时间索引的频率生成组。我不知道如何使用一个级别的多索引来实现这一点。有什么想法吗?

确保索引的级别1为datetime类型。然后你可以做:

print(
df.groupby(
[
pd.Grouper(level=0),
pd.Grouper(level=1, freq="W", label="left", closed="left"),
]
)["mark"]
.sum()
.to_frame()
)

打印:

mark
cluster dt              
1       2021-03-21    13
2021-03-28    26
2       2021-03-21    14
2021-03-28     2
3       2021-03-21     4

最新更新