簡體   English   中英

刪除僅在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

我想知道是否有辦法做到這一點。

您可以使用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

您可以使用groupby然后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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM