pandas DF中的重复行

Guf*_*oru 10 row count duplicates pandas

我在Pandas有一个DF,看起来像:

Letters Numbers
A       1
A       3
A       2
A       1
B       1
B       2
B       3
C       2
C       2
Run Code Online (Sandbox Code Playgroud)

我想要计算相似行的数量并将结果保存在第三列中.例如,我正在寻找的输出:

Letters Numbers Events
A       1       2
A       2       1
A       3       1
B       1       1
B       2       1
B       3       1
C       2       2
Run Code Online (Sandbox Code Playgroud)

我要做的就是这里的一个例子.我想出的最好的想法是使用count_values(),但我认为这仅适用于一列.另一个想法是使用duplicated(),无论如何我不想构造任何for-loop.我很确定,存在for循环的Pythonic替代方案.

jor*_*ris 18

您可以对这两列进行分组,然后计算组的大小:

In [16]: df.groupby(['Letters', 'Numbers']).size()
Out[16]: 
Letters  Numbers
A        1          2
         2          1
         3          1
B        1          1
         2          1
         3          1
C        2          2
dtype: int64
Run Code Online (Sandbox Code Playgroud)

要获取示例输出中的DataFrame,可以使用重置索引reset_index.


EdC*_*ica 6

你可以使用groupby,transform然后组合drop_duplicates

In [84]:

df['Events'] = df.groupby('Letters')['Numbers'].transform(pd.Series.value_counts)
df.drop_duplicates()
Out[84]:
  Letters  Numbers  Events
0       A        1       2
1       A        3       1
2       A        2       1
4       B        1       1
5       B        2       1
6       B        3       1
7       C        2       2
Run Code Online (Sandbox Code Playgroud)