2017-06-17 90 views
1

如何根據單元格值刪除Pandas Dataframe中的一行而不給出特定的列名稱?基於單元格值從Pandas DataFrame中刪除行

例如:

我有這樣的數據幀,我想刪除其中一個單元格中包含的值「d」的所有行。

A B C D 
1 1 2 d 5 
2 1 3 4 0 
3 d 2 1 2 
4 3 2 1 7 

所以我最終數據幀

A B C D 
2 1 3 4 0 
4 3 2 1 7 

有沒有辦法來實現這一目標?我的谷歌技能只找到需要特定列名稱的解決方案。

回答

5

你能做到這樣:

df = df[~df.select_dtypes(['object']).eq('d').any(1)] 

結果:

In [23]: df 
Out[23]: 
    A B C D 
2 1 3 4 0 
4 3 2 1 7 
3

另一種方式,你可以做到這一點使用astypeneall

df[df.astype(str).ne('d').all(axis=1)] 

輸出:

A B C D 
2 1 3 4 0 
4 3 2 1 7 

的另一種方法:

df.where(df.values != 'd').dropna() 

輸出:

A B C D 
2 1 3 4 0 
4 3 2 1 7 
相關問題