Python 使用一个函数创建一个列,其中变量来自其他列

Python 使用一个函数创建一个列,其中变量来自其他列,python,pandas,dataframe,Python,Pandas,Dataframe,我的df有两列日期:Start和End列。我有一个函数,可以计算两个日期之间的工作日(以及做其他事情)特殊日期(开始、结束)并且结束值必须不为空(NaT),否则我们将0延迟。 我需要用函数中传递的两个结果创建第三列 我曾经做过: df['Delay'] = pd.to_datetime(df['End']) - pd.to_datetime(df['Start']) 现在我只需要这样的东西: df["Delay"] = df[df["End"]!=np.

我的df有两列日期:
Start
End
列。我有一个函数,可以计算两个日期之间的工作日(以及做其他事情)<代码>特殊日期(开始、结束)并且结束值必须不为空(NaT),否则我们将0延迟。

我需要用函数中传递的两个结果创建第三列

我曾经做过:

df['Delay'] = pd.to_datetime(df['End']) - pd.to_datetime(df['Start'])
现在我只需要这样的东西:

df["Delay"] = df[df["End"]!=np.NaT].apply(bday_special(df["Start"], df["End"]))

df["Delay"] = df.apply(lambda df: if df["End"] is not np.NaT , bday_special(df["Start"], df["End"]), else 0)
TypeError:无法转换输入

以上两个都不起作用。。。请问合适的语法是什么


我更喜欢使用pandas方案,而不是浏览列表

使用
apply
axis=1
参数

df["Delay"] = df.apply(lambda x: 0 if x.End is np.nan else bday_special(x.Start, x.End), axis=1) # axis=1 means iterate over rows

apply
axis=1
参数一起使用

df["Delay"] = df.apply(lambda x: 0 if x.End is np.nan else bday_special(x.Start, x.End), axis=1) # axis=1 means iterate over rows

没有回答你的问题?我不确定是否得到它,我需要数据框的列作为参数。如果没有回答你的问题,我不确定是否得到它,我需要数据框的列作为参数。谢谢,我会试试这个。但是,我有这个错误
AttributeError:模块'numpy'没有属性'NaT'
我将使用
pd.NaT
确定。将其替换为
np.nan
它与
pd.NaT
一起工作,我们在这里使用了
apply
而不是
lappy
,对吗?谢谢,我会试试这个。但是,我有这个错误
AttributeError:模块'numpy'没有属性'NaT'
我将使用
pd.NaT
确定。将其替换为
np.nan
它与
pd.NaT
一起工作,我们在这里使用了
apply
而不是
lappy
,对吗?