2017-09-14 87 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