我有一個包含超過一百萬行的大型資料框,我想洗掉任何不包含行本身內所有唯一值的行。
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
uj5u.com熱心網友回復:
眾所周知, 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提出的解決方案,但它似乎比你的代碼慢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428725.html
上一篇:pandaseval,回傳資料框
