当其他列中的值等于某个值时,获取列中项目的计数

时间:2017-03-19 03:33:33

标签: python python-2.7 pandas dataframe

for i in range(0,9):
    num = training_data[training_data[i]==row[i]&training_data[9]==1].groupby([i,9]).size()
    print num
    count_equals.append(num)

数据帧

      0  1  2   3  4   5  6  7  8  9
314   1  1  1   1  1   1  2  1  1  1 
431   5  1  1   3  4   1  3  2  1  1
260  10  5  8  10  3  10  5  1  3 -1
91    3  1  1   2  2   1  1  1  1  1
337   1  1  1   1  2   1  3  1  1  1

我需要计入一个列表,否则没有第二个条件工作。 如果row = [1,1,1,1,1,1,1,1] 那么count_equals列表应该是[2,4,4,2,4,1,3,4]

  

错误:
  追溯(最近的呼叫最后):
    文件“naive.py”,第46行,中       num = training_data [training_data [i] == row [i]& training_data [9] == 1] .groupby([i,9])。size()
    文件“/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py”,第917行,非零       .format(个体。的即可。的名称))
  ValueError:Series的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

1 个答案:

答案 0 :(得分:0)

training_data[i]==row[i]&training_data[9]==1中,运算符&的优先级高于==。在执行AND之前用括号括起关系表达式:

(training_data[i]==row[i]) & (training_data[9]==1)