我的数据格式如下:
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
我想确切地查看数据框中的哪些行(这是一个很大的集合),而按行搜索几乎不是很有效。
有没有更好的方法可以做到这一点?
答案 0 :(得分:1)
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