python - 将数据框中的列转换为“类”?
问题描述
所以我基本上得到了这个数据框:
,club_name,tr_begin,year,ranking
0,ADO Den Haag,1357,2010,6.0
1,ADO Den Haag,1480,2011,15.0
2,ADO Den Haag,1397,2012,9.0
3,ADO Den Haag,1384,2013,9.0
4,ADO Den Haag,1451,2014,13.0
我想做的是这个,我想通过每一个排名,并根据它的价值将它们放入一个类中。因此,排名 6 将进入第 2 类,排名 1 将进入第 1 类。转换表是这样的:
if ranking > 0 and ranking =< 3:
rank_class = 1
if ranking > 3 and ranking =< 6:
rank_class = 2
etc etc etc
这我想以 3 的倍数发生,直到 18 岁。
所以我希望的输出是:
,club_name,tr_begin,year,ranking, ranking_class
0,ADO Den Haag,1357,2010,6.0, 2
1,ADO Den Haag,1480,2011,15.0, 5
2,ADO Den Haag,1397,2012,9.0, 3
3,ADO Den Haag,1384,2013,9.0, 3
4,ADO Den Haag,1451,2014,13.0, 5
我尝试使用掩码功能,并通过创建一个新的数据框然后合并,这有效,但似乎很草率。有一些简单的方法可以做到这一点吗?
提前致谢
解决方案
使用pandas.cut
,您可以为“bins”和“labels”定义迭代。由于它们都可以使用range
对象来定义,因此简化了这一点。
我建议您将您的ranking
系列转换为int
第一个;它可能会受到浮点舍入的影响,这可能会产生不良结果。
df = pd.read_csv('file.csv')
binrange = range(0, 19, 3)
labrange = range(1, 7)
df['ranking_class'] = pd.cut(df['ranking'], bins=binrange, labels=labrange)
print(df)
club_name tr_begin year ranking ranking_class
0 ADO Den Haag 1357 2010 6.0 2
1 ADO Den Haag 1480 2011 15.0 5
2 ADO Den Haag 1397 2012 9.0 3
3 ADO Den Haag 1384 2013 9.0 3
4 ADO Den Haag 1451 2014 13.0 5
推荐阅读
- python - 如何将 msgpack 转换为 json 格式
- google-sheets - 我可以获取具有多列的行的月-年和总金额吗?
- spring - 一个变量的 URL PathVariable 更改出现 500 错误,而不是另一个变量
- python - “DataLoader”对象不支持索引
- openseadragon - OpenSeadragon 中的 RemoveHandler
- python - 无法从 Python 应用程序执行 Excel SQL 查询
- lua - (Lua)当内部的 if 语句停止时,while 语句停止
- python - python - 如何为包含python中特定字符串的所有列选择一个子集?
- java - Spring Batch - 作业未启动,因为 ORA-14400:插入的分区键未映射到任何分区
- amazon-web-services - AWS CLI 不会检测/接受凭证