将Excel公式转换为python

将Excel公式转换为python,python,excel,pandas,excel-formula,Python,Excel,Pandas,Excel Formula,我有这个公式的电子表格。我能够理解条件检查部分、$R7/$O7的计算以及条件不满足时的默认值。产品内部到底发生了什么(1+($U7:Z7))-1 还有,为什么我们有{}?如果我在某个单元格中手动键入公式,它将不起作用 我正在尝试将这个公式转换为python。这是我的代码: df.loc[(df['T'] >= df['AA']), 'x'] = (df['R']/df['O'])/PRODUCT()-1 我的问题是如何计算此计算的乘积部分?如果您只想知道如何计算数组的乘积,其中每个值加1

我有这个公式的电子表格。我能够理解条件检查部分、$R7/$O7的计算以及条件不满足时的默认值。产品内部到底发生了什么(1+($U7:Z7))-1

还有,为什么我们有{}?如果我在某个单元格中手动键入公式,它将不起作用

我正在尝试将这个公式转换为python。这是我的代码:

df.loc[(df['T'] >= df['AA']), 'x'] = (df['R']/df['O'])/PRODUCT()-1

我的问题是如何计算此计算的乘积部分?

如果您只想知道如何计算数组的乘积,其中每个值加1,结果减去1,则可以使用numpy轻松完成:

import numpy as np

arr = np.array([1,2,3,4,5])
product = np.prod(arr+1) - 1
print product
Numpy计算是按数组进行的,因此将每个值加1就是
array+1

根据您在评论中的更新,这是如何完成的:

df.loc[(df['T'] >= df['AA']), 'x'] = (df['R']/df['O']) / ((df[['a', 'b']]+1).product(axis=1) - 1)

其中
a
b
是列名。请注意,当
df['T']>=df['AA']
为false时,此公式返回
NaN

如果您只想知道如何计算数组的乘积,其中每个值加1,结果减1,则可以使用numpy轻松完成:

import numpy as np

arr = np.array([1,2,3,4,5])
product = np.prod(arr+1) - 1
print product
Numpy计算是按数组进行的,因此将每个值加1就是
array+1

根据您在评论中的更新,这是如何完成的:

df.loc[(df['T'] >= df['AA']), 'x'] = (df['R']/df['O']) / ((df[['a', 'b']]+1).product(axis=1) - 1)

其中
a
b
是列名。请注意,当
df['T']>=df['AA']
为false时,此公式返回
NaN

“为什么我们有{}”-这是Excel中的一个数组公式,键入时不带大括号,使用
CTRL-SHIFT-ENTER
输入。能否提供一个?AFAIK,乘积函数接受两个输入并将它们相乘。您的示例只有一个(假设格式正确-是否返回Excel中的输入?)是。它返回一个有效的响应。
(乘积(1+($U7:Z7))
计算单元U7到Z7中每个值+1的乘积。在计算乘积之前,每个值加1需要
{}
。最后的-1只是从乘积中减去1。CSE公式基本上是这样工作的,它首先计算一个数组(在本例中,数组中的每个值都加1),然后对该数组执行其他一些计算,在本例中是乘积。“为什么我们有{}”-这是Excel中的数组公式,输入时不使用大括号,并使用
CTRL-SHIFT-ENTER
输入。您能否提供一个?AFAIK,PRODUCT函数接受两个输入并将它们相乘。您的示例只有一个(假设格式正确-是否返回Excel中的输入?)是。它返回一个有效的响应。
(乘积(1+($U7:Z7))
计算单元U7到Z7中每个值+1的乘积。在计算乘积之前,每个值加1需要
{}
。最后的-1只是从乘积中减去1。CSE公式的工作原理基本上类似于它首先计算一个数组(在本例中,每个值加1)然后对该数组执行其他一些计算,在本例中为乘积。