Python 统计数据帧中唯一行的数目

Python 统计数据帧中唯一行的数目,python,pandas,dataframe,Python,Pandas,Dataframe,我需要计算数据帧中唯一行的数量。我尝试了这个解决方案:但它产生了一个错误 这是我尝试的代码: import pandas as pd df = {'x1': ['A','B','A','A','B','A','A','A'], 'x2': [1,3,2,2,3,1,2,3]} df = pd.DataFrame(df) print df.groupby(['x1','x2'], as_index=False).count() 这就是错误: Traceback (most recent ca

我需要计算数据帧中唯一行的数量。我尝试了这个解决方案:但它产生了一个错误

这是我尝试的代码:

import pandas as pd

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

print df.groupby(['x1','x2'], as_index=False).count()
这就是错误:

Traceback (most recent call last):
  File "/home/user/workspace/project/test.py", line 9, in <module>
    print df.groupby(['x1','x2'], as_index=False).count()
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 4372, in count
    return self._wrap_agged_blocks(data.items, list(blk))
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 4274, in _wrap_agged_blocks
    index = np.arange(blocks[0].values.shape[1])
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“/home/user/workspace/project/test.py”,第9行,在
打印df.groupby(['x1','x2'],作为_index=False).count()
文件“/usr/local/lib/python2.7/dist packages/pandas/core/groupby.py”,第4372行,计数
返回self._wrap_agged_块(data.items,list(blk))
文件“/usr/local/lib/python2.7/dist packages/pandas/core/groupby.py”,第4274行,在“包装”和“标记”块中
index=np.arange(块[0]。值。形状[1])
索引器:列表索引超出范围

我做错了什么?

使用
size
(ps:您可以在末尾添加
.reset\u index()

或者修复你的代码

df.groupby(['x1','x2'])['x2'].count()
Out[1264]: 
x1  x2
A   1     2
    2     3
    3     1
B   3     2
Name: x2, dtype: int64
如果您想知道唯一的组,可以使用
ngroups

df.groupby(['x1','x2']).ngroups
Out[1267]: 4

使用
size
(ps:您可以在末尾添加
.reset_index()

或者修复你的代码

df.groupby(['x1','x2'])['x2'].count()
Out[1264]: 
x1  x2
A   1     2
    2     3
    3     1
B   3     2
Name: x2, dtype: int64
如果您想知道唯一的组,可以使用
ngroups

df.groupby(['x1','x2']).ngroups
Out[1267]: 4

您可以删除重复项:

import pandas as pd

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

print(len(df.drop_duplicates()))
返回

4

您可以删除重复项:

import pandas as pd

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

print(len(df.drop_duplicates()))
返回

4

thx,这是完美的:打印df.groupby(['x1','x2'],作为_index=False).size().reset_index()@DanixDanilovic在这种情况下,您可以使用:
df.groupby(list(df.columns),作为_index=False).size().reset_index()
这是更通用的。thx,这是完美的:打印df.groupby(['x1','x2'],作为_index=False).size().reset_index())@DanixDanilovic在这种情况下,您可以使用:
df.groupby(list(df.columns),as\u index=False).size().reset\u index()
,这是更通用的。