将自定义函数应用于Pandas数据框的多列,并在一列中返回输出

时间:2018-07-19 21:16:19

标签: python pandas pandas-apply

我正在将此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,因为我需要在列中执行所有行值。

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

逻辑是-

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

0 个答案:

没有答案