簡體   English   中英

在給定列中刪除具有唯一元素的pandas dataFrame行。 (獨特的意思是重復一次)

[英]Drop rows of a pandas dataFrame with unique elements in a given column. (by unique I mean repeated once)

假設我有以下dataFrame,我想刪除包含10和100的行,即在col1中只出現過一次的元素。

數據幀

我可以執行以下操作:

a = df.groupby('col1').size()
b = list(a[a == 1].index)

然后有一個for循環並逐行刪除行:

d_ind = df[df['col1']==b[0]].index
df.drop(d_ind, axis=0, inplace=True)

有沒有更快,更有效的方法?

您可以在col1上使用duplicated方法,該方法可以使用keep=False參數檢測元素是否重復,並返回一個布爾系列,可用於子集/過濾/刪除行:

df[df.col1.duplicated(keep=False)]

#   col1  col2  months
#0     1     3       6
#1     1     4       6
#4     4    20       6
#5     4    11       7
#6     4    12       7

暫無
暫無

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

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