我有一个pandas数据框,我想从中删除特定列中字符串长度大于2的行。
我希望能够做到这一点(根据此答案):
df[(len(df['column name']) < 2)]
但我只是得到了错误:
KeyError: u'no item named False'
我做错了什么?
(注意:我知道我可以使用df.dropna()
删除包含任何NaN
的行,但我没有看到如何基于条件表达式删除行。)
您可以将DataFrame
分配给其自身的筛选版本:
df = df[df.score > 50]
这比删除
更快:
%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test = test[test.x < 0]
# 54.5 ms ± 2.02 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test.drop(test[test.x > 0].index, inplace=True)
# 201 ms ± 17.9 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test = test.drop(test[test.x > 0].index)
# 194 ms ± 7.03 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
当您执行len(df['column name'])
时,您只得到一个数字,即数据帧中的行数(即列本身的长度)。如果要对列中的每个元素应用len
,请使用df['column name'].map(len)
。所以试试看
df[df['column name'].map(len) < 2]
要直接回答此问题的原始标题“如何基于条件表达式从pandas数据帧中删除行”(我理解这不一定是OP的问题,但可以帮助其他用户遇到此问题),一种方法是使用drop方法:
df = df.drop(some labels)
df = df.drop(df[<some boolean condition>].index)
实例
删除列“score”所在的所有行
df = df.drop(df[df.score < 50].index)
到位版本(如评论中指出的)
df.drop(df[df.score < 50].index, inplace=True)
多重条件
(请参见布尔索引)
运算符为:|
for或
,
删除列“score”所在的所有行
df = df.drop(df[(df.score < 50) & (df.score > 20)].index)
我试图通过比较对象中的多个字段来从数组中找到重复的对象。 我想将对象的两个字段与同一数组的其他对象进行比较。 我想露营只是名称和 lname,忽略我的对象内的第 3 个字段 如何查找和删除输出如下的重复对象
问题内容: 我有以下数据框 基本上我可以如下过滤行 我可以如下所示删除/删除一行 但是我想根据条件删除一定数量的行,我该怎么做? 问题答案: 最好的是但需要反转条件-使所有值相等且更高,如下所示: 与功能相同: 另一种可能的解决方案是通过以下方法反转掩码:
问题内容: 现在,我知道如何检查数据框中多列中的特定值。但是,我似乎无法弄清楚如何基于布尔响应执行if语句。 例如: 使用和遍历目录并将特定文件读入数据框。 现在检查跨多个列的数据框。第一个值是列名(column1),下一个值是我在该列(香蕉)中寻找的特定值。然后,我正在检查另一列(column2)的特定值(绿色)。如果这两个都是正确的,我想执行一项特定的任务。但是,如果它是错误的,我想做其他事情
我想删除我的DataFrame中的第一列,我在网上找到了答案。答案是删除列1、2和4。我想知道为什么这行代码可以删除列,轴在这里的作用是什么?
当日期列的值在日期列表中时,我想从熊猫数据帧中删除行。以下代码不起作用: 我得到以下错误: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我有一个6000行数据框,我想删除所有值小于2的行。我目前的尝试是:df=煤[煤['值'] 我已经附上了我的df的快照,我想删除较小的值。我对python还是比较陌生的,所以请容忍我。 https://i.stack.imgur.com/3mbA7.png