Python 带条件的布尔表达式中的问题
我试图根据列质量设置新变量“not_good”、“good”和“very good”。 因此,数据集中的每一行,其中一个变量中只有“1”,其余两个变量中只有两个“0”。 我使用了上面的代码Python 带条件的布尔表达式中的问题,python,pandas,data-science,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): d
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。您有一个对象数据。
该数据对象有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
- 使用Pandas时,应尽可能避免显式循环
- 与其使用0或1,不如只使用布尔值
- 与其有三列,每个质量级别一列,为什么不使用一个分类列?您可以在Pandas中阅读有关分类数据的更多信息