[英]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.