Python isnull() - 连续使用 Lambda

Python isnull() - using Lambda on a row

我正在尝试向数据框添加一列 - ad_clicks。

ad_clicks 已经有一个列 - ad_click_timestamp 如果客户单击该网站,该列具有时间值。如果 he/she 没有,则单元格中的值为 nan。

如果我这样做 -

ad_clicks['is_click'] = ~ad_clicks.ad_click_timestamp.isnull()

有效。

如果我这样做 -

ad_clicks['is_click'] = ad_clicks.apply(lambda row : ~row.ad_click_timestamp.isnull(), axis = 1)

它抛出如下错误-

AttributeError: ("'str' object has no attribute 'isnull'", u'occurred at index 0')

根据我的理解 - 在没有指定列的情况下使用 apply,lambda 函数的输入成为行,并且通过指定要操作的列 - 它为每一行选择特定的列并执行操作。

那么,为什么相同的表达式在没有 lambda 的情况下也有效 - 当应用于列时,但在应用于单元格时却不适用于 lambda。

我在这里错过了什么?提前感谢您的任何解释(或我可能遗漏的语法更正)。

您的代码不起作用,因为在 apply 调用中,row.ad_click_timestamp 会给出一个项目,类似于 np.nan。所以你必须尝试:

ad_clicks['is_click'] = ad_clicks.apply(lambda row : ~np.isnan(row.ad_click_timestamp), axis = 1)

或者:

ad_clicks['is_click'] = ad_clicks.apply(lambda row : ~(row.ad_click_timestamp != row.ad_click_timestamp), axis = 1)