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)
我正在尝试向数据框添加一列 - 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)