我想编写可以使用 df.method()
表示法在 pd.DataFrame
df
上调用的自定义函数.
例如,
def my_pd_method(df: pd.DataFrame, col: str)->pd.DataFrame:
'''apply my_function to df[col] of df'''
df_copy = df.copy(deep = True)
df_copy[col] = df_copy[col].apply(lambda x: my_function(x), axis = 1)
return df_copy
之后,我可以运行命令
PandasObject.my_pd_method = my_pd_method
将 my_pd_method
定义为 pd 方法。
此后,df.my_pd_method(col)
将按预期运行。
是否有某种方法可以在单个函数中执行此操作,我可以将其放入库中,导入并开始使用它,而无需运行 PandasObject.my_pd_method = my_pd_method
?
最佳答案
最好的办法是使用继承,即创建自己的继承自 pandas DataFrame 类的自定义类。
示例:
class CustomDataFrame(pd.DataFrame):
def my_method(self, col):
df_copy = self.copy(deep = True)
df_copy[col] = df_copy[col].apply(lambda x: my_function(x), axis = 1)
return df_copy
然后您将能够像您想要的那样调用您的方法:
df.my_method(col)
关于python - Pandas DataFrame 的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74485623/