2017-08-25 33 views
3

下面是另外一個問題了一些數據:合併多指標列彙集成1平

date  type  value 
1/1/2016 a   1 
1/1/2016 b   2 
1/1/2016 a   1 
1/1/2016 b   4 
1/2/2016 a   1 
1/2/2016 b   1 

運行此行代碼:

x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack() 

x應該是這樣的:

  sum max 
type  a b a b 
date     
1/1/2016 2 6 1 4 
1/2/2016 1 1 1 1 

我想結合上層和下層的列來得到這個:

  sum_a sum_b max_a max_b 
date     
1/1/2016 2  6  1  4 
1/2/2016 1  1  1  1 

有沒有簡單的方法來做到這一點?

回答

1

有這樣的討論在這裏:

Python Pandas - How to flatten a hierarchical index in columns

,共識似乎是:

x.columns = ['_'.join(col) for col in x.columns.values] 
print(x) 
      sum_a sum_b max_a max_b 
date         
1/1/2016  2  6  1  4 
1/2/2016  1  1  1  1 

將是很好,如果有這一個內置的方法,但不似乎是。

+1

感謝。這似乎是最不頭痛的版本。 –

+0

我有點覺得這個問題現在是一個關聯問題,我們應該標記爲重複嗎? – EdChum

+0

@EdChum是的,我已經遇到過,但它太冗長了,我的眼睛盯着它。我認爲這很好,因爲它是同樣問題的更簡單的表述。我把它留給你,駐地熊貓金徽章:) –

1

非常相似解決上述使用ZIP:

x.columns = [x + '_' + i for x, i in zip(x.columns.get_level_values(0), x.columns.get_level_values(1))] 
x 
      sum_a sum_b max_a max_b 
date         
1/1/2016  2  6  1  4 
1/2/2016  1  1  1  1