簡體   English   中英

有沒有辦法在不使用應用的情況下刪除數據框中的非唯一行?

[英]Is there a way to remove non unique rows in data frame without using apply?

我有一個包含超過一百萬行的大型數據框,我想刪除任何不包含行本身內所有唯一值的行。

    0   1   2   4   3
0   13  3   2   0   3 # Want to drop 
1   13  72  2   13  1 # Want to drop
2   13  3   2   8   5

有沒有更快的方法來實現與下面的代碼相同的結果?

df[df.apply(lambda x: x.is_unique, axis=1)]
#     0  1  2  4  3
# 2  13  3  2  8  5

已知Numpy的運行速度明顯快於Pandas

所以嘗試下面的代碼:

nCol = df.shape[1]
df[np.apply_along_axis(lambda row: np.unique(row).size == nCol, 1, df.values)]

我使用%timeit對執行時間進行的比較表明我的代碼比您的代碼快大約 3 倍。

對於更大的源 DataFrame,此差異可能更大。 自行檢查,然后在評論中傳遞結果。

順便說一下:我也檢查了enke提出的解決方案,但它似乎比你的代碼慢。

暫無
暫無

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

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