![](/img/trans.png)
[英]Keep unique values of a column in a data frame WITHOUT using drop duplicates
[英]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.