[译]如何根据条件从pandas DataFrame中删除不需要的行?
问题来源:https://stackoverflow.com/que...
问:
我有一个pandas DataFrame,我想删除它特定列中字符串差姑娘是大于2的行,我知道我可以使用df.dropna()来去除包含NaN的行,但我没有找到如何根据条件删除行。
似乎我能够这样做:
df[(len(df['column name']) < 2)]
但却报错了:
KeyError: u'no item named False'
谁能告诉我错在哪里了?
回答一:
当你这样做时,len(df['column name'])你只得到一个数字,即DataFrame中的行数(即列本身的长度)。如果要应用于len列中的每个元素,请使用df['column name'].map(len)。
尝试使用:
df[df['column name'].map(len) < 2]
评论:
我想出了一种使用列表解析的方法:df[[(len(x) < 2) for x in df['column name']]] 但是你这种方法更好些。
回答二:
要直接回答这个问题,一种方法是使用drop方法:
df = df.drop(some labels) df = df.drop(df[<some boolean condition>].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)
相关推荐
roamer 2020-10-29
三石 2020-08-23
QianYanDai 2020-08-16
mmmjyjy 2020-07-16
QianYanDai 2020-07-05
QianYanDai 2020-07-05
jiahaohappy 2020-06-21
QianYanDai 2020-06-16
zhangxiaojiakele 2020-05-25
jzlixiao 2020-05-15
jiahaohappy 2020-05-12
zhangxiaojiakele 2020-05-11
jzlixiao 2020-05-08
Series是一种类似于一维数组的对象,由一组数据以及一组与之对应的索引组成。 index: 索引序列,必须是唯一的,且与数据的长度相同. 如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引
jzlixiao 2020-05-09
81510295 2020-11-17
listep 2020-09-11
Tristahong 2020-08-24
Johnson0 2020-07-28
santiago00 2020-07-11