gpt4 book ai didi

Pandas 多索引数据帧 : aggregate sub-groups within groups

转载 作者:行者123 更新时间:2023-12-04 03:33:46 25 4
gpt4 key购买 nike

我有以下多索引 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
                                markcluster     dt  1           2021-03-23          8            2021-03-25          5            2021-03-28          20            2021-03-29          62           2021-03-23          10            2021-03-25          4            2021-03-28          1            2021-03-31          13           2021-03-23          4

我想要做的是在每个索引组内生成每周子组的总和,比如

                                total markcluster     start_date_of_week  1           2021-03-21          13            2021-03-28          262           2021-03-21          14            2021-03-28          23           2021-03-23          4

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

最佳答案

确保索引的级别 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 多索引数据帧 : aggregate sub-groups within groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67349194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com