[英]Python Pandas: MultiIndex groupby second level of columns
我正在嘗試按多列對行進行分組。 這個小例子可以說明我想要實現的目標:
import pandas as pd
col_index = pd.MultiIndex.from_arrays([['A','A','B','B'],['a','b','c','d']])
df = pd.DataFrame([ [1,2,3,3],
[4,2,2,2],
[6,4,2,2],
[1,2,4,4],
[3,8,4,4],
[1,2,3,3]], columns = col_index)
由此創建的 DataFrame 如下所示:
A B
a b c d
0 1 2 3 3
1 4 2 2 2
2 6 4 2 2
3 1 2 4 4
4 3 8 4 4
5 1 2 3 3
我想按 'c' 和 'd' 分組,實際上是整個 'B' 這給了我“KeyError: 'c'”
#something like this
df.groupby(['c','d'], axis = 1, level = 1)
#or like this
df.groupby('B', axis = 1, level = 0)
我嘗試尋找答案,但似乎找不到任何答案。
有人可以告訴我我做錯了什么嗎?
這是通過首先重置列來執行此操作的一種方法:
df.set_axis(df.columns.droplevel(0), axis=1,inplace=False).groupby(['c','d']).sum()
Out[531]:
a b
c d
2 2 10 6
3 3 2 4
4 4 4 10
您還可以明確指定 2 級多指標。
df.groupby([("B","c"), ("B", "d")])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.