检查何时多个数据框列在Python中具有特定值

时间:2018-11-05 19:07:30

标签: python python-3.x pandas dataframe if-statement

我的数据格式如下:

Shop              Date             Produced         Lost        Output     Signal
Cornerstop        01-01-2010          0              1            9          1
Cornerstop        01-01-2010          11             1            11         0
Cornerstop        01-01-2010          0              0            0          2
Cornerstop        01-01-2010          1              0            0          2
Cornerstop        01-01-2010          5              7            0          2
.
.
.
.

'Produced'为0时,数据应该具有'Lost''Output'的值为0,但不是案件。我需要一种方法来找出何时不是这种情况(当Produced为0但Lost,Output或Signal都不为0时。)

制作一个计数器来计算是否为真,这就是我以前看到的数字:

counter = 0

for index, row in data.iterrows():
    if row['Produced'] and row['Lost'] != 0:
        counter += 1
    else:
        continue

我想确切地查看数据框中的哪些行(这是一个很大的集合),而按行搜索几乎不是很有效。

有没有更好的方法可以做到这一点?

3 个答案:

答案 0 :(得分:1)

尝试Boolean indexing

data[(data['Produced'] == 0) & (data['Lost'] != 0) & (data['Output'] != 0) & (data['Signal'] != 0)]

答案 1 :(得分:1)

您可以使用布尔索引和pd.DataFrame.all。为了提高可读性,您可以将掩码存储在变量中:

_optionType

答案 2 :(得分:0)

我的方法是使用==0和{{1}打包一个Produced部分(!=0)和一个loc部分组成数组的布尔索引。 }:

any