我试图通过应用函数来转换熊猫的年龄列。如何使下面的代码工作,或者有更多的仿生方式来做到这一点。
cps=(cps.assign(Age_grp_T=cps['age'].apply(lambda x:{x>=71:'Tradionalists',
71>x>=52:'Baby Boomers',
52>x>=46:'Generation X',
46>x>=16:'Millennials'}.get(x, ' ')))发布于 2016-06-11 17:46:17
为此,我将使用切()函数:
In [663]: labels=[' ','Millennials','Generation X','Baby Boomers','Tradionalists']
In [664]: a['category'] = pd.cut(a['age'], bins=[1, 16,46,52,71, 200],labels=labels)
In [665]: a
Out[665]:
age category
0 29 Millennials
1 65 Baby Boomers
2 68 Baby Boomers
3 18 Millennials
4 29 Millennials
5 58 Baby Boomers
6 15
7 67 Baby Boomers
8 21 Millennials
9 17 Millennials
10 19 Millennials
11 39 Millennials
12 64 Baby Boomers
13 70 Baby Boomers
14 33 Millennials
15 27 Millennials
16 54 Baby Boomers
17 60 Baby Boomers
18 23 Millennials
19 65 Baby Boomers
20 63 Baby Boomers
21 36 Millennials
22 53 Baby Boomers
23 29 Millennials
24 66 Baby Boomers发布于 2016-06-11 18:07:14
我又找到了一种方法,但是谢谢MaxU,你的答案也很有效
cps=(cps.assign(Age_grp_T=np.where(cps['age']>=71,"Tradionalists",
np.where(np.logical_and(71>cps['age'],cps['age']>=52),"Baby Boomers",
np.where(np.logical_and(52>cps['age'],cps['age']>=46),"Generation X",
np.where(np.logical_and(46>cps['age'],cps['age']>=16),"Millennials",-99))))
)我想知道哪一个更有效率?
https://stackoverflow.com/questions/37766700
复制相似问题