使用Lambda表达式的类中的Python调用函数

时间:2019-03-20 09:42:50

标签: python class object lambda

.py文件中有一个类,其中包含两个函数。

new_column根据现有列(Col1和Col2)的值生成一个新列。

transform_df通过lambda表达式将上一个函数应用于数据框。

最终结果如下:

Col1    Col2    col3
0   a   b   ab
1   a   b   ab
2   a   c   None
3   a   b   ab

如何在新文件/笔记本中使用这些功能?

# kept within file df_functions.py
class Functions():

    def __init__(self, path):
        self.path = path # path to .csv

    # function to create new column, based on Col1 and Col2 values
    def new_column(self, row):
        if (row['Col1'] == 'a') & (row['Col2'] == 'b'):
            return 'ab'

    # apply previously defined function via lambda expression
    def transform_df(self, path):        
        df = pd.read_csv(self.path)

        # apply function 'new_column' to df
        df['col3'] = df.apply(lambda row: self.new_column(row), axis=1)

        # other potential functions applications here

        return df

我尝试了以下方法:

from df_functions import Functions

df_path = '../datafile.csv'
FunctionsObject = Functions(path=df_path)

new_df = FunctionsObject.transform_df(path=df_path)

但是返回

NameError: ("name 'new_column' is not defined", 'occurred at index 0')

1 个答案:

答案 0 :(得分:0)

似乎是与对包含该类的.py文件进行编辑有关的问题。进行更改后,我重新启动了内核,导入的功能按预期工作。