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

如何将Pandas DataFrame公式中的**转换为Pow函数形式?

解决方案:将公式中的幂运算**转换为Pow函数形式

可以通过正则表达式配合pandas的字符串替换方法来实现需求,核心思路是匹配X**Y的结构,将其替换为Pow(X,Y)的格式。

实现代码

import pandas as pd
import re

data = {
    'Input_Equation': [
        '0.06*Log(Sqrt(K / POR))**2 + 0.11',
        '4.96861155787536*(0.917 - POR)**3',
        '3.80241264879314*POR**2'
    ]
}

df = pd.DataFrame(data)

# 定义正则模式,捕获**前后的表达式和幂次
pattern = r'(.+?)\*\*(\d+\.?\d*|\w+)'
# 替换为Pow函数格式
df['Output_Equation'] = df['Input_Equation'].str.replace(pattern, r'Pow(\1,\2)', regex=True)

print(df)

代码解释

  • 正则模式r'(.+?)\*\*(\d+\.?\d*|\w+)':
    • (.+?):非贪婪匹配**之前的所有内容(包括函数调用、括号、运算符等),确保完整捕获幂运算的底数部分
    • \*\*:匹配连续的两个星号(幂运算符号)
    • (\d+\.?\d*|\w+):匹配幂次部分,支持整数/小数数字或变量名
  • str.replace(pattern, r'Pow(\1,\2)', regex=True):使用反向引用\1和\2分别调用捕获到的底数和幂次,拼接成Pow(X,Y)的格式

运行结果

执行代码后得到的DataFrame与示例中的预期输出完全一致:

Input_Equation                          Output_Equation
0  0.06*Log(Sqrt(K / POR))**2 + 0.11  0.06*Pow(Log(Sqrt(K / POR)),2) + 0.11
1  4.96861155787536*(0.917 - POR)**3  4.96861155787536*Pow((0.917 - POR),3)
2          3.80241264879314*POR**2          3.80241264879314*Pow(POR,2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:52:55