0

我正在将此 Excel 公式转换为 Pandas 和 Python。

=IF(ISBLANK('Raw Data'!$A3),"",IF(OR(ISERROR((('Raw Data'!BY3+'Raw Data'!BZ3)*'Raw Data'!BX3*12)),'Raw Data'!BY3=0),'Raw Data'!CN3,(('Raw Data'!BY3+'Raw Data'!BZ3)*'Raw Data'!BX3*12)))

这会将值返回到数据框中的列中。

我已将 raw_data 转换为数据框。我已经在定义的函数中用 Python 编写了我的逻辑。

我应该如何将该函数一次应用于多列的原始数据框?我做不到——

df['output column name']=rawdf['input_colm name'].apply(function_name, axis=0)

由于我必须逐列垂直向下移动,因此我使用的是axis = 0。

编辑

为了更清晰,将 Excel 代码写入 Python 逻辑,与 BX/BY/BZ 一起使用的数字(即 3)只是表明该公式适用于一列中的一个单元格,因此列中的值会下降对应 BX/BY/BZ -3 变化为 BX4,BX5,BX6.../BY4,BY5,BY6 等等。

因为在这里我必须垂直查看数据,所以我使用axis = 0,因为我需要在 column 中执行所有行值。

主要问题是我应该如何在这里使用“应用”与这么多不同的列。我是否也需要将列作为参数结束?

逻辑是——

def output_column_name():

    for i in range(0,nloans):

        if ((raw_df['BY'][i]==0) or (isinstance((raw_df['BY'][i] + raw_df['BZ'][i] ) * raw_df['BX'][i]*12,float)==False)):

            return raw_df['CN'][i]
else:
            return (raw_df['BY'][i] + raw_df['BZ'][i] ) * raw_df['BX'][i]*12

df['OUTPUT COLUMN NAME']=raw_df.apply( output_column_name,axis=0)

我还将 raw_df 和 df 转换为 numpyarray

4

0 回答 0