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

问题描述 投票:-1回答:2

我正在尝试根据列的质量设置新变量'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。

python pandas data-science
2个回答
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

0
投票
  • 与熊猫一起使用时,应尽可能避免显式循环。
  • 而不是0或1,最好只使用布尔值。
  • 而不是使用三列,每个列代表每个质量级别,为什么不使用单个分类列?您可以在熊猫here中阅读有关分类数据的更多信息。
© www.soinside.com 2019 - 2024. All rights reserved.