Python DataFrame中如何生成带%格式的百分比计算列?
Pandas生成带百分比格式的列
假设你的DataFrame包含列A和B(A < B),要生成带%符号、指定小数位数的百分比列,直接用以下方法即可:
方法1:使用apply结合f-string格式化
import pandas as pd # 示例DataFrame df = pd.DataFrame({'A': [15, 25, 35], 'B': [60, 100, 140]}) # 计算百分比并生成新列,这里保留2位小数 df['百分比'] = (df['A'] / df['B']).apply(lambda x: f"{x*100:.2f}%")
方法2:使用map结合字符串格式模板
更简洁的写法,省去lambda:
df['百分比'] = (df['A'] / df['B'] * 100).map("{:.2f}%".format)
调整小数位数
如果需要保留1位小数,把格式字符串里的.2f改成.1f即可,比如:
df['百分比'] = (df['A'] / df['B']).apply(lambda x: f"{x*100:.1f}%")
注意事项
- 生成的
百分比列是字符串类型,仅适合展示;如果后续还要做数值运算,建议保留原始的小数比例列(比如df['比例'] = df['A']/df['B'])。 - 如果数据中有缺失值,可以添加判断避免报错:
df['百分比'] = (df['A'] / df['B']).apply(lambda x: f"{x*100:.2f}%" if pd.notna(x) else "")
运行示例代码后,输出的DataFrame会是这样:
A B 百分比 0 15 60 25.00% 1 25 100 25.00% 2 35 140 25.00%
内容的提问来源于stack exchange,提问作者Nihal Maulavi
相关产品推荐
相关产品推荐

