給下面的例子:下降幾個多從熊貓數據框中
import numpy as np
import pandas as pd
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
def var1(x): return max(x)-min(x)
def var2(x): return (max(x)-min(x))/max(x)
def var3(x): return (max(x)-min(x))/ len(x)
df = df.groupby(['A','B']).agg({'C': var1, 'D': [var2, var3]})
df.columns = df.columns.droplevel()
但df.columns = df.columns.droplevel()
不是我想要的,因爲我只能降一個級別的解決方案。我想放棄這2個第一關。
編輯
我已經嘗試過df.columns = df.columns.droplevel()
有:0,1,2..
我想獲得一個DF沒有紅細胞:
換句話說,我不能達到這個輸出(一個簡單的標題):
A B var1 var2 var3
bar one 0.000000 -0.000000 0.000000
three 0.000000 -0.000000 0.000000
two 0.000000 -0.000000 0.000000
foo one 1.381629 -1.683335 0.582389
three 0.000000 0.000000 0.000000
two 0.636372 -0.031118 0.020791
和'df.columns = df.columns.droplevel (0)'? – jezrael
或者'df.columns = df.columns.levels [1]'? – Zero
我不能得到我想要的,你必須注意到我仍然有「2級」,並且輸出結果不是我在目標解決方案「打印的」 – PeCaDe