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

如何基于DataFrame列中含列名的公式计算生成新列?

解决方法

要实现这个需求,我们可以利用Python的eval()函数结合pandas的apply()方法,逐行解析并执行col3中的计算公式:

完整代码示例

import pandas as pd

# 创建初始DataFrame
df = pd.DataFrame({
    'col1': [1,3,5,7],
    'col2': [2,4,6,8],
    'col3': ['(col1*(1+col2))*col1','col1+col2','col1/col2','col1-col2']
})

# 计算col4:逐行执行col3的公式
df['col4'] = df.apply(lambda row: eval(row['col3'], globals(), row.to_dict()), axis=1)

# 格式化col4为两位小数,匹配预期输出
df['col4'] = df['col4'].round(2)

print(df)

执行结果

col1  col2                     col3  col4
0     1     2  (col1*(1+col2))*col1   3.00
1     3     4               col1+col2   7.00
2     5     6               col1/col2   0.83
3     7     8               col1-col2  -1.00

原理说明

  • apply(axis=1):遍历DataFrame的每一行
  • row.to_dict():把当前行的列名和值转为字典,作为eval()的局部命名空间,这样公式里的col1、col2会直接取当前行对应的值
  • round(2):将计算结果保留两位小数,和预期输出的格式对齐

注意:eval()会执行传入的字符串代码,若col3中包含不可信内容,存在安全风险,仅在数据来源可控时使用。

内容的提问来源于stack exchange,提问作者bakas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:17:39