如何使用Pandas实现DataFrame内分数按规则转小数并保留原有小数
实现代码
import pandas as pd # 构造示例DataFrame,实际使用时替换为你自己的df读取逻辑即可 data = [ ["123/100", "221/100", "103/50"], ["49/100", "333/100", "223/50"], ["153/100", "81/50", "229/100"], ["183/100", "47/25", "31/20"], ["2.23", "3.2", "3.04"], ["2.39", "3.61", "2.69"] ] df = pd.DataFrame(data, columns=["1", "2", "3"]) # 定义值转换函数 def convert_value(x): x_str = str(x).strip() if "/" in x_str: # 拆分分数的分子分母计算后加1 numerator, denominator = map(int, x_str.split("/")) return (numerator / denominator) + 1 else: # 非分数直接转浮点保留原值 return float(x_str) # 全表批量应用转换规则 df = df.applymap(convert_value) # 打印转换后结果 print(df)
逻辑说明
- 自定义转换函数优先判断单元格内容是否包含分数分隔符
/,识别为分数后拆分分子、分母做除法运算再加1 - 原本为小数的内容直接转浮点型保留原始数值
- 通过
applymap对整个DataFrame所有单元格批量执行转换,不需要逐列单独处理
内容的提问来源于stack exchange,提问作者user16304089
相关产品推荐
相关产品推荐

