首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据值的范围有效地对数据帧行进行分类?

如何根据值的范围有效地对数据帧行进行分类?
EN

Stack Overflow用户
提问于 2018-02-19 15:58:57
回答 1查看 253关注 0票数 1

你好,我是Python的新手,我有一个熊猫数据帧,看起来像下面看到的,我从一个txt文件中导入的:

代码语言:javascript
复制
UnitNamePCU  Timestamp           PowerREF  PowerPCU         
F09       2014-11-01 00:20:00     60.73     79.64   
F09       2014-11-01 00:30:00     63.15     84.06   
F09       2014-11-01 01:00:00    101.06     84.03   
F09       2014-11-01 01:10:00    122.79    104.29   
F09       2014-11-01 01:20:00     86.57    110.08   
F09       2014-11-01 01:40:00     16.74     27.32   
F09       2014-11-01 01:50:00     12.59     21.69   
F09       2014-11-01 02:20:00     17.42     13.98

我的问题是如何将列PowerREF和PowerPCU中的数据排序到“bin1”中,例如:bin1= PowerREF < 50,bin2 = 50 < PowerREF < 100。我知道我可以这样做:

代码语言:javascript
复制
bin1 = [x for x in data.PowerREF if x < 50]
bin2 = [x for x in data.PowerREF if x > 50 and x < 100]

但由于下一次bin1 =x< 100,bin2 = 100

代码语言:javascript
复制
PowerLim = 1500
binInterval = 50
bin = range(0, PowerLim+1, binInterval)

我只是不知道如何将它巧妙而有效地融入到binnin过程中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-19 16:37:10

IIUC,你可以在这里使用pd.cut

代码语言:javascript
复制
power_lim = 1500
bins = np.arange(0, power_lim + 1, 50)

pd.cut(df.PowerREF, bins=bins)

F09     (50, 100]
F09     (50, 100]
F09    (100, 150]
F09    (100, 150]
F09     (50, 100]
F09       (0, 50]
F09       (0, 50]
F09       (0, 50]
Name: PowerREF, dtype: category
Categories (30, interval[int64]): [(0, 50] < (50, 100] < (100, 150] < (150, 200] < ... <
                                   (1300, 1350] < (1350, 1400] < (1400, 1450] < (1450, 1500]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48861682

复制
相关文章

相似问题

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