有条件的布尔表达式中的问题

时间:2019-12-16 00:38:30

标签: python pandas data-science

我试图根据列质量设置新的变量“ not_good”,“ good”和“ very good”。 因此,在数据集中的每一行中,我仅在其中之一中具有“ 1”,而在其余两个变量中仅具有两个“ 0”。 我使用了上面的代码,

for i in range(1599):
if (data.quality[i] == 3) or (data.quality[i] == 4):
    data.not_good = 1
if (data.quality[i] == 5) or (data.quality[i] == 6):
    data.good = 1
if (data.quality[i] == 7) or (data.quality[i] == 8):
    data.very_good =1

单元格运行良好,但我发现所有行中添加的所有变量均等于1。

2 个答案:

答案 0 :(得分:0)

您有一个对象数据。 该数据对象具有4个变量:

not_good : int
good : int
very_good : int
quality : int[] # int array

只要其中一个数据不是“好”,“好”或“非常好”,您到处都有一个。 当您选择的类型不是int而是int []时,可以解决该问题,代码如下所示:

data_length = 1599

data.not_good = [0]*data_length
data.good = [0]*data_length
data.very_good = [0]*data_length

for i in range(data_length):
if (data.quality[i] == 3) or (data.quality[i] == 4):
    data.not_good[i] = 1
if (data.quality[i] == 5) or (data.quality[i] == 6):
    data.good[i] = 1
if (data.quality[i] == 7) or (data.quality[i] == 8):
    data.very_good[i] =1

答案 1 :(得分:0)

  • 与熊猫一起工作时,应尽可能避免显式循环。
  • 最好使用布尔值而不是0或1。
  • 为什么不使用三列,每个列代表一个质​​量级别,为什么不使用一个分类列呢?您可以在熊猫here中阅读有关分类数据的更多信息。