在count列中添加第二列后,如何在数据框中获得唯一行

时间:2019-02-22 08:28:03

标签: python pandas dataframe

我正在使用以下数据框。

df = pd.DataFrame({'A' : ['aa','bb','aa','dd','ff','dd','aa','bb','dd','cc'], 'B' : ['xx','xx','yy','zz','xx','xx','yy','zz','zz','yy']})

创建一个像这样的表

    A   B
0   aa  xx
1   bb  xx
2   aa  yy
3   dd  zz
4   ff  xx
5   dd  xx
6   aa  yy
7   bb  zz
8   dd  zz
9   cc  yy

我可以添加第3列

df.groupby(['A','B']).size()

如下表所示:

A   B 
aa  xx    1
    yy    2
bb  xx    1
    zz    1
cc  yy    1
dd  xx    1
    zz    2
ff  xx    1
dtype: int64

我想得到以下输出:

A      Count
aa     3   
bb     2   
cc     1  
dd     3    
ff     1  

我无法获得以下输出,我也尝试过

df.groupby(['A','B']).B.agg('count').to_frame('Count').reset_index()

但是它无法获得输出。任何帮助深表感谢。

2 个答案:

答案 0 :(得分:0)

更改此:

df.groupby(['A','B']).size()

对此:

df.groupby(['A']).size()

或者只是:

df['A'].value_counts()

因此:

import pandas as pd
df = pd.DataFrame({'A' : ['aa','bb','aa','dd','ff','dd','aa','bb','dd','cc'], 'B' : ['xx','xx','yy','zz','xx','xx','yy','zz','zz','yy']})
print(df.groupby(['A']).size())

输出:

A
aa    3
bb    2
cc    1
dd    3
ff    1
dtype: int64

答案 1 :(得分:0)

您正在采取太多步骤来简化一些事情。无需先按“ A”和“ B”分组,然后再执行操作。只需按“ A”分组并计数。

<textarea style="width:240px;height:50px;">
  <div>a<span>b</span><b>c</b></div>
</textarea>