熊猫使用套用方法时会删除lambda

时间:2018-08-20 11:59:26

标签: python pandas dataframe

在熊猫管道中,给定数据框df,按行创建新列的最佳方法是:

(df
 . (...)
 .assign(new_col = lambda df_: df_.apply(lambda row: my_function(row), axis=1)
)

分配需要一个pd.Series,它本身是通过apply逐行构建的。
我觉得这个策略太冗长了(在一行代码中有两个lambda)。有没有更简单和/或更有效的方法来达到相同的结果? 我在考虑类似于以下内容的语法:

 .assign(new_col = lambda row: my_function(row), axis=1)

谢谢。

1 个答案:

答案 0 :(得分:0)

如您所发现,pd.DataFrame.apply接受一个函数。将lambda row: my_function(row)应用于每一行是将my_function应用于每一行的一种混淆方式,因为lambda只是一个匿名函数。因此,只需直接输入my_function

df.(...)\
  .assign(new_col=lambda df_: df_.apply(my_function, axis=1))

请注意,如果my_function中使用的列未更改,并且您的数据帧索引在整个先前的逻辑中都得到维护,则可以简化您的逻辑:

df.(...)\
  .assign(new_col=df.apply(my_function, axis=1))