Pandas管道抛出错误,将df作为参数传递



Pandas管道抛出错误,将df作为参数传递

理想情况下,管道默认情况下应该将数据帧作为参数,这在我的情况下不会发生。

class Summary:
def get_src_base_df(self):
<do stuff>
return df

@staticmethod
def sum_agg(df):
cols = 'FREQUENCY_ID|^FLAG_'
df = (df.filter(regex=cols).fillna(0)
.groupby('FREQUENCY_ID').agg(lambda x: x.astype(int).sum()))
return df
# few other @static methods
def get_src_df(self):
df = self.get_src_base_df().pipe(self.sum_agg()) #pipe chain continues  
# --> error: sum_agg() missing 1 required positional argument: 'df'
# but the below line works
# df = self.get_src_base_df().pipe((lambda x: self.sum_agg(x))) #pipe chain continues


通过执行self.sum_agg(),您正在调用sum_agg函数(Python中的@staticmethod与函数几乎没有区别(,由于它在该调用中没有参数,因此它理所当然地失败了。您需要传递函数对象,而不是函数返回的值。

改为:

def get_src_df(self):
df = self.get_src_base_df().pipe(self.sum_agg)  # note: no parentheses

相关内容

  • 没有找到相关文章

最新更新