Pandas - 数据框中唯一行出现次数

13

如何计算 DataFrame 中每个唯一行的出现次数?

data = {'x1': ['A','B','A','A','B','A','A','A'], 'x2': [1,3,2,2,3,1,2,3]}
df = pd.DataFrame(data)

df
  x1  x2
0  A   1
1  B   3
2  A   2
3  A   2
4  B   3
5  A   1
6  A   2
7  A   3

我希望能够获得

   x1  x2 count 
0   A   1     2
1   A   2     3
2   A   3     1
3   B   3     2

对不起,你当前的方法有什么问题?或者你期望根据len(df.groupby(['x1','x2']).count())得到最后的结果为4 - EdChum
我无法获取count列。我的代码返回“空数据框”。 - Pepacz
你是不是要找的是 df['count'] = df.groupby(['x1','x2'])['x1'].transform('count') - EdChum
1
这是你想要的吗 df.groupby(['x1','x2'], as_index=False).count() - EdChum
@EdChum 是的,最后一个就是,谢谢。 - Pepacz
3个回答

13

据我所知,你可以将as_index=False作为一个参数传递给groupby

In [100]:
df.groupby(['x1','x2'], as_index=False).count()

Out[100]:
  x1  x2  count
0  A   1      2
1  A   2      3
2  A   3      1
3  B   3      2

3
我不确定pandas是否更改了某些内容导致此答案出现错误,但我尝试时它并没有添加一个count列: df = pd.DataFrame(df); df.groupby(['x1','x2'], as_index=False).count(); ``` - Joe
count 已更改为 value_counts - user16836078

12

您也可以删除重复的行:

In [4]: df.shape[0]
Out[4]: 8

In [5]: df.drop_duplicates().shape[0]
Out[5]: 4

0

有两种方法可以在您的数据框中找到独特的出现。

第一种:使用 drop_duplicates

df.drop_duplicates().sort_values('x1',ignore_index=True)

第二步:使用groupby.nunique

df.groupby(['x1','x2'], as_index=False).nunique()

要查找出现次数,@EdChum的答案可以精确地起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接