首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建具有numpy多次返回的变量,其中

创建具有numpy多次返回的变量,其中
EN

Stack Overflow用户
提问于 2017-11-24 17:20:41
回答 1查看 497关注 0票数 0

嗨,我是stata用户,现在我正试图将我在stata的代码传递给python/大熊猫。在这种情况下,我想要创建一个新的变量size,如果作业数量在1到9之间,值1赋值1,如果作业在10到49之间,值2在50到199之间,值4分配给大于200个作业。

然后,如果可能的话(1:“微”,2:“小”,3:“中位数”,4:“大”)

代码语言:javascript
运行
复制
id  year  entry  cohort  jobs  
1  2009    0     NaN      3
1  2012    1     2012     3
1  2013    0     2012     4
1  2014    0     2012     11
2  2010    1     2010     11
2  2011    0     2010     12
2  2012    0     2010     13       
3  2007    0     NaN      38
3  2008    0     NaN      58       
3  2012    1     2012     58       
3  2013    0     2012     70
4  2007    0     NaN      231
4  2008    0     NaN      241

我试过使用这段代码,但没有成功。

df['size'] = np.where((1 <= df['jobs'] <= 9),'Micro',np.where((10 <= df['jobs'] <= 49),'Small'),np.where((50 <= df['jobs'] <= 200),'Median'),np.where((200 <= df['empleo']),'Big','NaN'))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-24 17:54:23

您想要做的是所谓的绑定使用pd.cut,即

代码语言:javascript
运行
复制
df['new'] = pd.cut(df['jobs'],bins=[1,10,50,201,np.inf],labels=['micro','small','medium','big'])

输出:

代码语言:javascript
运行
复制
   id  year  entry  cohort  jobs     new
0    1  2009      0     NaN     3   micro
1    1  2012      1  2012.0     3   micro
2    1  2013      0  2012.0     4   micro
3    1  2014      0  2012.0    11   small
4    2  2010      1  2010.0    11   small
5    2  2011      0  2010.0    12   small
6    2  2012      0  2010.0    13   small
7    3  2007      0     NaN    38   small
8    3  2008      0     NaN    58  medium
9    3  2012      1  2012.0    58  medium
10   3  2013      0  2012.0    70  medium
11   4  2007      0     NaN   231     big
12   4  2008      0     NaN   241     big

对于多个条件,您必须选择np.select而不是np.where。希望这能有所帮助。

numpy.select(condlist,choicelist,default=0) 其中,condlist是您的condtions的列表,而choicelist是满足条件的选择列表。默认值= 0,这里您可以将其放在np.nan中

使用np.select.between的帮助下进行同样的操作,例如

代码语言:javascript
运行
复制
np.select([df['jobs'].between(1,10),
           df['jobs'].between(10,50),
           df['jobs'].between(50,200),
           df['jobs'].between(200,np.inf)],
           ['Micro','Small','Median','Big']
           ,'NaN')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47477744

复制
相关文章

相似问题

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