如何清理Pandas的Score列并转换为整数以实现排名操作
解决Pandas Score列数据清理与排名问题
数据清理核心思路
- 先统一处理字符串格式:将数值中的逗号替换为小数点,适配Python的数值识别规则
- 转换为数值类型后再转为整数,完成数据标准化
- 清理完成后即可正常执行排名操作
具体代码实现
import pandas as pd # 示例DataFrame(模拟你的数据结构) df = pd.DataFrame({'Score': ['100', '200', '300', '500,00', '800,00', '610,00']}) # 清理数据:替换逗号为小数点→转浮点数→转整数 df['Cleaned_Score'] = df['Score'].str.replace(',', '.').astype(float).astype(int) # 执行排名(按分数降序,相同分数取最小排名,可按需调整method参数) df['Rank'] = df['Cleaned_Score'].rank(ascending=False, method='min') print(df)
代码说明
str.replace(',', '.'):把带逗号的字符串转换成Python可识别的浮点数格式astype(float).astype(int):先转浮点数适配带小数的格式,再转整数自动去除.00后缀,得到纯整数rank()参数:ascending=False实现从高分到低分排名,method='min'表示相同分数取最小排名,可替换为'max'、'dense'等满足不同排名规则
优化方案(针对小数固定为00的场景)
如果确认所有带逗号的数值小数部分都是00,可以直接截断冗余部分,跳过浮点数转换:
df['Cleaned_Score'] = df['Score'].str.replace(',00', '').astype(int)
这种方式效率更高,适合数据格式固定的场景
内容的提问来源于stack exchange,提问作者Jheison G Salazar Munoz
相关产品推荐
相关产品推荐

