Python isnull() -在一行上使用Lambda



我正在尝试添加一个列到数据帧- ad_clicks。

ad_clicks已经有一个列- ad_click_timestamp时间值,如果客户点击了网站。如果他/她没有,则单元格中的值为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)

最新更新