如何批量修改Pandas DataFrame多列浮点值为百分比格式字符串
Pandas浮点列批量转换为百分比字符串方案
本方案会实际修改单元格存储的内容为字符串类型,而非仅调整展示格式,支持批量处理所有浮点列,可灵活配置是否带引号、保留小数位数。
基础实现(不带引号,保留2位小数)
import numpy as np import pandas as pd # 生成测试数据 df = pd.DataFrame(np.random.rand(5, 5)) # 筛选所有浮点类型列,避免误修改其他类型列 float_cols = df.select_dtypes(include=['float']).columns # 批量转换为百分比字符串,实际修改存储值 df[float_cols] = df[float_cols].applymap(lambda x: f"{x:.2%}") # 验证转换结果 print(df) print("\n转换后列类型:") print(df.dtypes)
转换后原浮点数值会直接变为字符串格式的百分比,例如0.795329会转为79.53%,列类型变为object(字符串存储类型),导出到CSV、Excel等文件时会直接保留百分比格式。
扩展:带引号的百分比格式
如果需要输出带单引号/双引号包裹的百分比字符串,只需修改格式化规则即可:
# 单引号包裹,示例输出:'79.53%' df[float_cols] = df[float_cols].applymap(lambda x: f"'{x:.2%}'") # 双引号包裹,示例输出:"79.53%" df[float_cols] = df[float_cols].applymap(lambda x: f'"{x:.2%}"')
注意事项
- 若需要调整保留小数位数,只需修改格式化字符串中的数字即可,比如保留1位小数改为
f"{x:.1%}" - 转换后列类型变为字符串,后续如果需要做数值计算,需先将百分比字符串转换回浮点类型
- 若只需处理指定列而非所有浮点列,将
float_cols替换为自定义的列名列表即可,比如float_cols = ['列1','列2'] - 若数据中存在空值,可在匿名函数中增加空值判断避免报错,示例:
lambda x: f"{x:.2%}" if pd.notna(x) else ""
内容的提问来源于stack exchange,提问作者Nicolas Gervais
相关产品推荐
相关产品推荐

