我有一个带有两个索引的pandas multiindex,一个数据和一个性别列。它看起来像这样:
react-table
现在,如果我想找到每小时的平均值,我知道我可以这样做:
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
但是当你有一个多索引时,这似乎不起作用。我发现我可以达到Date索引,如:
df.groupby(df.index.hour).mean()
一天中24小时内的平均值,但是我对性别指数的追踪......
所以我的问题是:我怎样才能找到按性别划分的每个分部的平均每小时值?
答案 0 :(得分:2)
我认为您可以添加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