如何将DataFrame某列乘固定值后除以另一列生成新ratio_kcal/kg列
问题原因
你的原有代码存在两处问题:
- 运算逻辑不符合需求:仅对两列做了乘法运算,没有实现「日供应千卡值乘365后除以年供应千克值」的目标逻辑
- 采用
iterrows遍历的方式效率极低,且容易出现索引错位问题,pandas原生支持更高效的矢量化列运算
可行解决方案
步骤1:(可选)转换列数据类型
如果你的两列原始数据是字符串格式,先转为数值类型避免计算报错:
import pandas as pd import numpy as np new_table["Food supply (kcal/capita/day)"] = pd.to_numeric(new_table["Food supply (kcal/capita/day)"], errors='coerce') new_table["Food supply quantity (kg/capita/yr)"] = pd.to_numeric(new_table["Food supply quantity (kg/capita/yr)"], errors='coerce')
步骤2:直接计算生成新列
直接对整列做矢量化运算即可自动生成新列:
new_table["ratio_kcal/kg"] = (new_table["Food supply (kcal/capita/day)"] * 365) / new_table["Food supply quantity (kg/capita/yr)"]
步骤3:(可选)处理异常值
如果存在除数为0的情况,计算会得到无穷大值,可统一替换为空值:
new_table["ratio_kcal/kg"] = new_table["ratio_kcal/kg"].replace([np.inf, -np.inf], np.nan)
内容的提问来源于stack exchange,提问作者john hedman
相关产品推荐
相关产品推荐

