![](/img/trans.png)
[英]Create data frame based on rows, which columns meet a certain condition PYTHON
[英]Python: Filter rows in data frame when multiple rows meet a unique condition
我有一個類似於以下的數據集:
dt = {'A': [0,0,0,1],
'B': [0, 2,0,3],
'C': [0,0,0,4],
'D': [0,5,0,6]}
dt = pd.DataFrame(dt)
我的目標是在該行的列 ['A', 'B','C', 'D'] 全部為零時過濾所有行。 在實際數據集中而不是 4 列中,我有超過 20 列。 所以下面的解決方案是不可行的:
dt = dt[(dt['A'] == 0) & (dt['B'] == 0) & (dt['C'] == 0) & (dt['D'] == 0)]
所以我想出了以下解決方案:
dt['new'] = np.nan
lst = [0,1,2,3]
for i in range(len(dt)):
dt.iloc[i, 4] = all(dt.iloc[i, lst] == 0)
最后我可以根據“新”列進行過濾。
我正在尋找一個更有效的解決方案,最好是沒有循環的東西,任何幫助將不勝感激。
您可以嘗試使用DataFrame.eq
與DataFrame.all
和boolean indexing
dt[dt.eq(0).all(1)]
A B C D
0 0 0 0 0
2 0 0 0 0
另一個想法是使用np.any
或DataFrame.any
作為 boolean 掩碼
dt[~dt.any(1)] # @Sayandip Dutta's answer in the comments
dt[~np.any(dt, axis=1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.