如何根据单元格值删除Pandas Dataframe中的行而不提供特定的列名?
例如:
我有这个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
所以我最终得到了DataFrame
A B C D
2 1 3 4 0
4 3 2 1 7
有没有办法实现这个目标?我的谷歌技能只找到了需要特定列名称的解决方案。
答案 0 :(得分: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
答案 1 :(得分:3)
您可以使用astype
,ne
和all
的另一种方式:
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