首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -将值更改为组的问题

Python -将值更改为组的问题
EN

Stack Overflow用户
提问于 2020-05-27 12:26:43
回答 4查看 73关注 0票数 1

我有一个具有不同属性的数据集。其中一个属性是温度。我的温度范围是-30到大约30度。我想做一个机器学习研究,我想把温度分成不同的组。原则:低于-30: 0,-30到-10: 1等等。下面是我写的代码,但它的工作方式并不像我所希望的那样。数据类型是: int32,我用float64转换了它。

代码语言:javascript
运行
复制
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度,即任务正确执行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-27 12:39:34

看上去你在操纵数据。您试过使用应用函数吗?

就我个人而言,我会这样做(事实上,用一个新的专栏)。

1.编写一个函数来处理值

代码语言:javascript
运行
复制
def _check_temperature_range(x):
  if x <= -30:
    return 0
  elif x <= -10:
    return 1
  # so on and so forth...

2.将该函数应用到dataframe的列上。

代码语言:javascript
运行
复制
df[new_column] = df[column].apply(lambda x: _check_temperature_range(x))

如果您使用相同的new_column,则结果应该反映在column或旧列中。

票数 4
EN

Stack Overflow用户

发布于 2020-05-27 12:32:20

我相信这和你的代码顺序有关。

一个温度-3的记录,被分配为2-

代码语言:javascript
运行
复制
zbior.loc[(zbior['temperatura'] > -10) & (zbior['temperatura'] <= 0), 'temperatura'] = 2

然后,在下一行中,它再次被发现在0到10之间,并再次被分配为3-

代码语言:javascript
运行
复制
zbior.loc[(zbior['temperatura'] > 0) & (zbior['temperatura'] <= 10), 'temperatura'] = 3

一种解决方案是分配一个数字,它不会使你“跳转”一个类别。

所以,对于-3,我会分配0,这样它就会停留在周围。

在那之后,你可以再做一次,然后改变到你想要的实际数字,如0->3等。

票数 2
EN

Stack Overflow用户

发布于 2020-05-27 12:33:06

我认为您的代码在同一行上应用了多次。以第一行为例: temp = -3给出2,然后temp =2给出3

因此,我建议在dataframe中创建一个新列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62043130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档