You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中x/y/z列与对应_o列相除并计算百分比?

解决方法

假设你已经通过pandas创建了目标DataFrame,可按以下步骤计算所需百分比列:

  1. 批量生成百分比列
    针对每组对应列(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)
        )
    
  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}"
        )
    
  3. 最终结果
    运行代码后,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:10:35