2017-12-26 3 views
1

Ich muss die Anzahl der eindeutigen Zeile in einem Datenrahmen Pandas zählen. Ich versuche diese Lösung: pandas - number of unique rows occurrences in dataframe, aber es erzeugt einen Fehler.Anzahl der eindeutigen Zeile in Datenrahmen Pandas

Dies ist der Code, den ich versuche:

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() 

Dies ist der Fehler:

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 

, was mache ich falsch?

Antwort

2

Sie es mithilfe size (ps: Sie .reset_index() am Ende hinzufügen)

df.groupby(['x1','x2'], as_index=False).size() 
Out[1262]: 
x1 x2 
A 1  2 
    2  3 
    3  1 
B 3  2 
dtype: int64 

Oder Code beheben

df.groupby(['x1','x2'])['x2'].count() 
Out[1264]: 
x1 x2 
A 1  2 
    2  3 
    3  1 
B 3  2 
Name: x2, dtype: int64 

Wenn Sie die einzigartigen Gruppen wissen wollen, können Sie mit ngroups

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

thx, das ist perfekt: print df.groupby ([ 'x1', 'x2'], as_index = False) .Size() reset_index() –

+1

. @DanixDanilovic In diesem Fall könnten Sie folgendes verwenden: 'df.groupby (list (df.columns), as_index = False) .size(). Reset_index()' was generischer ist. –

1

Sie könnten Dupli fallen lassen kate:

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())) 

Returns

4 
Verwandte Themen