pandas数据帧分组方式和agg

pandas数据帧分组方式和agg,pandas,dataframe,ipython,Pandas,Dataframe,Ipython,我是ipython的新手,我正在尝试使用数据帧分组。我有一个如下所示的数据帧 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分组,但创建

我是ipython的新手,我正在尝试使用数据帧分组。我有一个如下所示的数据帧

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':['count'],'A':['sum']}

    B
  A B1 B2 C
0 6 2  2  3

怎么做?谢谢

您正在对每个列执行单独的操作。您可以通过聚合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

为什么结果中C=3?计算1+1+1+0(NaN)=3,而不是按B1或B2组计算,有意义吗?我的错,我应该把一个NaN放在那里,修正了Hanks,我如何在B1和B2的上面加上一个级别“B”,这样他们就在同一个“组”中?找到了。类似于names=['level0','level1']cols1=pd.MultiIndex.from_数组(['A','C','B','B','C','C'],['A','C','B1','B2','C1','C2']],names=names)df_分组。columns=cols1