gpt4 book ai didi

python - 如何在 pandas 多重索引中按小时分组

转载 作者:行者123 更新时间:2023-12-01 02:34:07 24 4
gpt4 key购买 nike

我有一个 pandas 多重索引,有两个索引、一个数据列和一个性别列。它看起来像这样:

                  Division  North  South  West  East

Date Gender
2016-05-16 19:00:00 F 0 2 3 3
M 12 15 12 12
2016-05-16 20:00:00 F 12 9 11 11
M 10 13 8 9
2016-05-16 21:00:00 F 9 4 7 1
M 5 1 12 10

现在,如果我想找到每小时的平均值,我知道我可以这样做:

df.groupby(df.index.hour).mean()

但是当您有多个索引时,这似乎不起作用。我发现我可以达到日期索引,例如:

df.groupby(df.index.get_level_values('Date').hour).mean()

一天 24 小时内的平均值,但我忘记了性别指数......

所以我的问题是:如何按性别找到每个部门的平均每小时值(value)?

最佳答案

我认为你可以添加MultiIndex级别,需要pandas 0.20.1+ :

df1 = df.groupby([df.index.get_level_values('Date').hour,'Gender']).mean()
print (df1)
North South West East
Date Gender
19 F 0 2 3 3
M 12 15 12 12
20 F 12 9 11 11
M 10 13 8 9
21 F 9 4 7 1
M 5 1 12 10

另一个解决方案:

df1 = df.groupby([df.index.get_level_values('Date').hour,
df.index.get_level_values('Gender')]).mean()
print (df1)
North South West East
Date Gender
19 F 0 2 3 3
M 12 15 12 12
20 F 12 9 11 11
M 10 13 8 9
21 F 9 4 7 1
M 5 1 12 10

或者直接从 MultiIndex 创建列:

df = df.reset_index()
df1 = df.groupby([df['Date'].dt.hour, 'Gender']).mean()
print (df1)
North South West East
Date Gender
19 F 0 2 3 3
M 12 15 12 12
20 F 12 9 11 11
M 10 13 8 9
21 F 9 4 7 1
M 5 1 12 10

关于python - 如何在 pandas 多重索引中按小时分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447714/

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