删除在 DataFrame 列中只出现一次的值
Remove values that appear only once in a DataFrame column
我在 x
列中有一个具有不同值的数据框。我想删除在列中只出现一次的值。
所以这个:
x
1 10
2 30
3 30
4 40
5 40
6 50
应该变成这样:
x
2 30
3 30
4 40
5 40
我想知道是否有办法做到这一点。
您可以使用 groupby
and transform
轻松获得此信息:
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
你可以使用groupby
and then filter
它:
In [9]:
df = pd.DataFrame([10, 30, 30, 40, 40, 50], columns=['x'])
df = df.groupby('x').filter(lambda x: len(x) > 1)
df
Out[9]:
x
1 30
2 30
3 40
4 40
如何使用更明确的方法来保留所有重复值:
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')
我在 x
列中有一个具有不同值的数据框。我想删除在列中只出现一次的值。
所以这个:
x
1 10
2 30
3 30
4 40
5 40
6 50
应该变成这样:
x
2 30
3 30
4 40
5 40
我想知道是否有办法做到这一点。
您可以使用 groupby
and transform
轻松获得此信息:
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
你可以使用groupby
and then filter
它:
In [9]:
df = pd.DataFrame([10, 30, 30, 40, 40, 50], columns=['x'])
df = df.groupby('x').filter(lambda x: len(x) > 1)
df
Out[9]:
x
1 30
2 30
3 40
4 40
如何使用更明确的方法来保留所有重复值:
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')