簡體   English   中英

Python Pandas:MultiIndex groupby 第二級列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM