【发布时间】:2017-08-04 08:20:06
【问题描述】:
我有一个如下所示的 DF
customer activity_1 activity_2 activity_3 activity_4
1 40 null 30 null
2 41 null null null
3 60 50 60 75
4 null null null null
5 null 20 40 10
问题1: 现在我需要使用嵌套的 if 函数添加一列,如果所有活动都为空,则返回 0,如果至少一个活动不为空,则返回 1,如果至少两个活动不为空,则返回 2,如果所有活动都不是,则返回 4空。
我试图解决的问题是:
def act(x):
if (x['activity_1'] != 'null'):
return 1
elif (x['activity_1'] != 'null') & (x['activity_2'] != 'null'):
return 2
elif (x['activity_1'] != 'null') & (x['activity_2'] != 'null') & (x['activity_3'] != 'null'):
return 3
elif (x['activity_1'] != 'null') & (x['activity_2'] != 'null') & (x['activity_3'] != 'null') & (x['activity_4'] != 'null'):
return 4
else:
return 0
然后:
df['act'] = df.apply(act, axis=1)
问题2: 添加一列,其中包含每个案例中存在的活动的名称。
到目前为止,我尝试的是定义另一个嵌套 if 函数,该函数检查新列中的值是否为 1 返回活动 1 等等
非常感谢!
【问题讨论】:
-
到目前为止我尝试过什么?看来你想让我们为你写代码..
-
我将代码添加到问题中
-
问题已更新,抱歉误导
-
谢谢 ;),否决票已删除。