如何将DataFrame中x/y/z列与对应_o列相除并计算百分比?
解决方法
假设你已经通过pandas创建了目标DataFrame,可按以下步骤计算所需百分比列:
批量生成百分比列
针对每组对应列(x与x_o、y与y_o、z与z_o),计算比值后乘以100得到百分比,再根据需求处理小数格式:import pandas as pd # 构造示例DataFrame data = { 'x': [1, 3], 'y': [5, 2], 'z': [3, 7], 'x_o': [10, 10], 'y_o': [20, 15], 'z_o': [15, 20] } df = pd.DataFrame(data) # 循环处理每一列对 for col in ['x', 'y', 'z']: # 计算百分比,整数显示为纯整数,非整数保留两位小数 df[f'{col}%'] = (df[col] / df[f'{col}_o'] * 100).apply( lambda val: int(val) if val.is_integer() else round(val, 2) )匹配示例格式的优化
如果需要完全去掉整数百分比的小数后缀(比如25.0显示为25),可以改用格式化输出:for col in ['x', 'y', 'z']: df[f'{col}%'] = (df[col] / df[f'{col}_o'] * 100).apply( lambda val: f"{int(val)}" if val.is_integer() else f"{val:.2f}" )最终结果
运行代码后,df将输出你期望的格式:x y z x_o y_o z_o x% y% z% 0 1 5 3 10 20 15 10 25 20 1 3 2 7 10 15 20 30 13.33 35
内容的提问来源于stack exchange,提问作者Yantra Logistics
相关产品推荐
相关产品推荐

