Pandas Multi-index DataFrame:聚合组内的子组
Posted
技术标签:
【中文标题】Pandas Multi-index DataFrame:聚合组内的子组【英文标题】:Pandas Multi-index DataFrame: aggregate sub-groups within groups 【发布时间】:2021-07-24 16:48:17 【问题描述】:我有以下多索引 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
标记
集群 dt
1 2021-03-23 8
2021-03-25 5
2021-03-28 20
2021-03-29 6
2 2021-03-23 10
2021-03-25 4
2021-03-28 1
2021-03-31 1
3 2021-03-23 4
我要做的是在每个索引组内生成每周子组的总和,类似于
总分 集群 start_date_of_week 1 2021-03-21 13 2021-03-28 26 2 2021-03-21 14 2021-03-28 2 3 2021-03-23 4我知道如何根据日期时间索引的频率生成组。我不知道如何使用一级多索引来做到这一点。有什么想法吗?
【问题讨论】:
【参考方案1】:确保索引的级别 1 是日期时间类型。然后你可以这样做:
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
【讨论】:
以上是关于Pandas Multi-index DataFrame:聚合组内的子组的主要内容,如果未能解决你的问题,请参考以下文章
python pandas multi-index在满足条件的索引级别内选择所有[重复]