我有一个 pandas DataFrame,我想从中删除特定列中字符串长度大于 2 的行。
我希望能够做到这一点(每这个答案 https://stackoverflow.com/questions/11881165/slice-pandas-dataframe-by-row):
df[(len(df['column name']) < 2)]
但我刚刚收到错误:
KeyError: u'no item named False'
我究竟做错了什么?
(注意:我知道我可以使用df.dropna()
删除包含任何内容的行NaN
,但我没有看到如何根据条件表达式删除行。)
要直接回答这个问题的原始标题“如何根据条件表达式从 pandas DataFrame 中删除行”(我理解这不一定是OP的问题,但可以帮助其他用户遇到这个问题),一种方法是使用这drop https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html method:
df = df.drop(some labels)
df = df.drop(df[<some boolean condition>].index)
Example
要删除列“score”
df = df.drop(df[df.score < 50].index)
就地版本(如评论中指出的)
df.drop(df[df.score < 50].index, inplace=True)
多种条件
(see 布尔索引 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing)
运营商是:|
for or
, &
for and
, and ~
for not
。这些必须是
使用括号进行分组。
删除“分数”列 20 的所有行
df = df.drop(df[(df.score < 50) & (df.score > 20)].index)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)