删除仅在DataFrame列中出现一次的值

时间:2015-10-11 23:23:50

标签: python pandas filtering dataframe

我在列x中有一个具有不同值的数据框。我想删除在列中只出现一次的值。

所以这个:

   x
1 10
2 30
3 30
4 40
5 40
6 50

应该变成这个:

   x
2 30
3 30
4 40
5 40

我想知道是否有办法做到这一点。

3 个答案:

答案 0 :(得分:11)

您可以使用groupbytransform

轻松获得此功能
In [1]: import pandas as pd

In [2]: df = pd.DataFrame([10, 30, 30, 40, 40, 50], columns=['x'])

In [3]: df = df[df.groupby('x').x.transform(len) > 1]

In [4]: df
Out[4]: 
    x
1  30
2  30
3  40
4  40

答案 1 :(得分:1)

您可以使用groupby,然后使用filter

mso

答案 2 :(得分:1)

如何更明确地保留所有重复值:

df = df.loc[df.duplicated(subset='x', keep=False), :]

相反,只保留唯一值:

df = df.loc[~df.duplicated(subset='x', keep=False), :]

而且:

df = df.loc[~df.duplicated(subset='x'), :]

相当于:

df = df.drop_duplicates(subset='x')