Python 使用“应用”方法时,请删除lambda

Python 使用“应用”方法时,请删除lambda,python,pandas,dataframe,Python,Pandas,Dataframe,在pandas管道中,我知道的最好的方法是在给定dataframedf的情况下按行创建新列,如下所示: (df . (...) .assign(new_col = lambda df_: df_.apply(lambda row: my_function(row), axis=1) ) assign需要一个pd.Series,它本身是通过apply按行构建的 我觉得这个策略太冗长了(一行代码中有两个lambda)。是否有更简单和/或更有效的方法达到相同的结果? 我考虑的语法类似于: .a

在pandas管道中,我知道的最好的方法是在给定dataframe
df
的情况下按行创建新列,如下所示:

(df
 . (...)
 .assign(new_col = lambda df_: df_.apply(lambda row: my_function(row), axis=1)
)
assign需要一个
pd.Series
,它本身是通过
apply
按行构建的
我觉得这个策略太冗长了(一行代码中有两个lambda)。是否有更简单和/或更有效的方法达到相同的结果? 我考虑的语法类似于:

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

正如您所发现的,接受函数。将
lambda行应用于每一行:my_函数(row)
是将
my_函数应用于每一行的一种模糊方式,因为
lambda
只是一个匿名函数。因此,只需直接输入
my_函数

df.(...)\
  .assign(new_col=lambda df_: df_.apply(my_function, axis=1))
注意:如果
my_function
中使用的列保持不变,并且在之前的逻辑中始终保持数据帧索引,则可以简化逻辑:

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

两个lambda都可能是冗余的。请显示my_函数。
.assign(new_col=lambda df:df.apply(my_函数,axis=1))
是该问题的解决方案。