2017-09-14 85 views
0

我是ipython的新手,我正在嘗試使用數據幀分組。我有像下面pandas dataframe group by和agg

df_test = pd.DataFrame({"A": range(4), "B": ["B1", "B2", "B1", "B2"], "C": ["C1", "C1", np.nan, "C2"]}) 
df_test 

    A B C 
0 0 B1 C1 
1 1 B2 C1 
2 2 B1 NaN 
3 3 B2 C2 

我想實現以下事情數據幀:

1)由B組但創建多級柱,而不是分組與B1和B2爲指標,B1和B2是行基本上計數

2)塔A和C是與像施加AGG函數{ 'C':[ '計數'], 'A':[ '總和']}

B 
    A B1 B2 C 
0 6 2 2 3 

如何?謝謝

+0

爲什麼C = 3的結果? –

+0

計數1 + 1 + 1 + 0(NaN)= 3,不按B1或B2計數,是否有意義?我的壞,我應該把NaN放在那裏,修正 – user3299264

回答

1

您正在對每列進行單獨的操作。您可以通過聚合A和C,然後分別獲取B的值計數,然後將數據合併到一起來破解這一點。

ac = df_test.agg({'A':'sum', 'C':'count'}) 
b = df_test['B'].value_counts() 
pd.concat([ac, b]).sort_index().to_frame().T 
    A B1 B2 C 
0 6 2 2 3 
+0

謝謝,我該如何在B1和B2上添加一個'B'級別,以便它們在同一個'組'中? – user3299264

+0

找到了。類似於名稱= ['Level 0','Level 1'] cols1 = pd.MultiIndex.from_arrays([['A','C','B','B','C','C']] ,['A','C','B1','B2','C1','C2']],姓名=姓名) df_grouped.columns = cols1 – user3299264