簡體   English   中英

使用lambda表達式在類中調用Python函數

[英]Python call function within class using lambda expression

我在.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')

似乎是對包含該類的.py文件進行編輯的問題。 進行更改后,我重新啟動內核,導入的函數按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM