如何基于条件表达式从 pandas DataFrame 中删除行
如何基于条件表达式从 pandas DataFrame 中删除行
这个问题已经有答案了:
我有一个pandas DataFrame,我想从它中删除一些行,其中特定列中的字符串长度大于2。
我期望能够像这样做(根据这个答案):
df[(len(df['column name']) < 2)]
但是我得到了以下错误:
KeyError: u'no item named False'
我做错了什么?
(注意:我知道我可以使用df.dropna()
来去除包含任何NaN
的行,但我没有看到如何基于条件表达式删除行。)
admin 更改状态以发布 2023年5月22日
直接回答这个问题的原题目"如何根据条件表达式从pandas数据框中删除行"(我理解这不一定是问题的提出者所面临的问题,但可能对其他遇到这个问题的用户有帮助),其中一种做法是使用drop方法:
df = df.drop(some labels) df = df.drop(df[].index)
示例
要删除所有“score”列小于50的行:
df = df.drop(df[df.score < 50].index)
“就地”版本(如评论所指出的)
df.drop(df[df.score < 50].index, inplace=True)
多个条件
(参见布尔索引)
运算符有:使用括号分组,
|
表示或,&
表示且,~
表示非。
要删除所有“score”列小于50且大于20的行
df = df.drop(df[(df.score < 50) & (df.score > 20)].index)