我有一个具有不同属性的数据集。这些属性之一是温度。我的体温范围是零下30到30度。我想做一个机器学习的研究,我想把温度分成不同的组。原则上:低于-30:0,-30到-10:1,依此类推。我写了下面的代码,但它没有按照我想要的方式工作。数据类型是:int32,我用float64转换了它
dane = [treningowy_df]
for zbior in dane:
zbior['temperatura'] = zbior['temperatura'].astype(int)
zbior.loc[ zbior['temperatura'] <= -30, 'temperatura'] = 0
zbior.loc[(zbior['temperatura'] > -30) & (zbior['temperatura'] <= -10), 'temperatura'] = 1
zbior.loc[(zbior['temperatura'] > -10) & (zbior['temperatura'] <= 0), 'temperatura'] = 2
zbior.loc[(zbior['temperatura'] > 0) & (zbior['temperatura'] <= 10), 'temperatura'] = 3
zbior.loc[(zbior['temperatura'] > 10) & (zbior['temperatura'] <= 20), 'temperatura'] = 4
zbior.loc[(zbior['temperatura'] > 20) & (zbior['temperatura'] <= 30), 'temperatura'] = 5
zbior.loc[ zbior['temperatura'] > 30, 'temperatura'] = 6
例如:在执行代码之前,记录1的温度为:-3;在应用代码之后,记录1的温度为:3。为什么?更改前温度为22,更改后温度为5的记录,即正确执行分配
看起来您正在操作一个数据帧。您是否尝试过使用应用功能
就我个人而言,我会这样做(事实上,有一个新的专栏)
1。编写一个函数来处理该值
2。将该函数应用于数据帧的列
结果应该反映在
new_column
或旧列中,如果您使用相同的column
我相信这与代码的顺序有关
温度为-3的记录被指定为2-
然后在下一行中,再次发现其介于0和10之间,并再次指定为3-
一个解决方案是分配一个不会让你“跳转”类别的号码
所以,对于-3,我将赋值为0,使其保持不变
之后,您可以进行另一次传递,并更改为所需的实际数字,例如0->;3等
我认为您的代码在同一行上应用了多次。 以第一行为例: 温度=-3等于2 但是温度=2等于3
因此,我建议在数据框中创建一个新列
相关问题 更多 >
编程相关推荐