仅保留pandas数据帧中的重复行

时间:2017-09-17 12:03:11

标签: python pandas dataframe duplicates

我有一个包含两列的数据框:“代理”和“客户端” 每行对应于代理和客户端之间的交互。

如果客户端与至少2个代理进行交互,我想只保留行。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

groupby使用transformvalue_counts

df[df.Agent.groupby(df.Agent).transform('value_counts') > 1]

请注意,作为mentioned here,您可能会有一个代理多次与同一客户端进行交互。这可能会被视为误报。如果您不想这样,可以在过滤之前添加drop_duplicates电话:

df = df.drop_duplicates()
df = df[df.Agent.groupby(df.Agent).transform('value_counts') > 1]
print(df)
   A  B
0  1  2
1  2  5
2  3  1
3  4  1
4  5  5
5  6  1

mask = df.B.groupby(df.B).transform('value_counts') > 1
print(mask)
0    False
1     True
2     True
3     True
4     True
5     True
Name: B, dtype: bool

df = df[mask]
print(df)
   A  B
1  2  5
2  3  1
3  4  1
4  5  5
5  6  1