根据多种条件删除行Python Pandas [英] Deleting rows based on multiple conditions Python Pandas

查看:152
本文介绍了根据多种条件删除行Python Pandas的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在满足一些条件时删除行:

I want to delete rows when a few conditions are met:

例如,生成一个随机的DataFrame:

For instance, a random DataFrame is generated:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=['one', 'two', 'three', 'four'])
print df

表的一个实例如下所示:

one instance of table is shown as below:

        one       two     three      four
0 -0.225730 -1.376075  0.187749  0.763307
1  0.031392  0.752496 -1.504769 -1.247581
2 -0.442992 -0.323782 -0.710859 -0.502574
3 -0.948055 -0.224910 -1.337001  3.328741
4  1.879985 -0.968238  1.229118 -1.044477
5  0.440025 -0.809856 -0.336522  0.787792
6  1.499040  0.195022  0.387194  0.952725
7 -0.923592 -1.394025 -0.623201 -0.738013
8 -1.775043 -1.279997  0.194206 -1.176260
9 -0.602815  1.183396 -2.712422 -0.377118

我要根据以下条件删除行:

I want to delete rows based on the conditions that:

行的col'一个','两个','三'的值大于0;

Row with value of col 'one', 'two', or 'three' greater than 0; and value of col 'four' less than 0 should be deleted.

然后我尝试实现如下:

df = df[df.one > 0 or df.two > 0 or df.three > 0 and df.four < 1]

但是,导致出现如下错误消息:

However, resulting in a error message as follow:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

有人可以帮助我如何基于多个条件删除吗?

Could someone help me on how to delete based on multiple conditions?

推荐答案

出于以下原因对我来说不是100%清楚pandas与按位逻辑运算符|&配合很好,但对布尔运算符orand却不满意.

For reasons that aren't 100% clear to me, pandas plays nice with the bitwise logical operators | and &, but not the boolean ones or and and.

尝试以下方法:

df = df[(df.one > 0) | (df.two > 0) | (df.three > 0) & (df.four < 1)]

这篇关于根据多种条件删除行Python Pandas的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆