Python 3.x 数据帧逻辑实现

Python 3.x 数据帧逻辑实现,python-3.x,pandas,Python 3.x,Pandas,我有一个具有列的数据集: `subscribe_date` `package_id` `subscription_name` `user_id` `subscription_status` 订阅状态的值为已取消,活动,失效,过期,已撤销,重新激活 基于PuxPositStutialValue>>,我必须创建一个名为 Curn的列。考虑到用户有一个值为“取消的< /强>”或“过期< /强> >的值,对于他们的PoptPosithStase 一些用户可能出现“强”>多个不同状态值<

我有一个具有列的数据集:

 `subscribe_date`   `package_id`    `subscription_name` `user_id`   `subscription_status`
订阅状态的值为已取消活动失效过期已撤销重新激活

基于PuxPositStutialValue>>,我必须创建一个名为 Curn的列。考虑到用户有一个值为“<强>取消的< /强>”或“<强>过期< /强> >的值,对于他们的PoptPosithStase

一些用户可能出现“强”>多个不同状态值< /强>,如果用户在任何时候都有一个值为“强”>“取消”<强> >或“强”>“强”>它们的订阅状态。 这是我的密码:

# Set a default value of churn as no
 subscriber_data['churn'] = 'no'

# Set churn value for all row indexes as yes which Age are cancelled or expired
subscriber_data['churn'][(subscriber_data['subscription_status'] =="cancelled") | (subscriber_data['subscription_status'] =="expired")] = 'yes'
现在,每个用户都被标记为“是”或“否”或两者兼而有之。我如何进一步处理,如果用户有两个或多个值“是”和“否”,则在所有情况下都应将其屏蔽为“是”

样本数据:

subscribe_date   package_id   subscription_name  user_id   subscription_status  churn
10/28/2015 23:29  0903a465-28f7-45b3-9860-12be9deed4ca   14 Day  0002b38f-ec0a-4ee5-8710-9cf54691bb55    cancelled   yes
6/21/2016 21:39  f3a5a639-f4df-4ebd-885d-abea26b37027    30-DayPass  00068201-1d40-4a84-b9bf-f4592aef9ba3    active  no
6/29/2016 19:30  f3a5a639-f4df-4ebd-885d-abea26b37027    30-DayPass  00068201-1d40-4a84-b9bf-f4592aef9ba3    cancelled   yes

您可以按
user\u id
对行进行分组,检查
chorn
的每一行是否等于
“yes”
,相应地转换该组的所有行:

import numpy as np
df.churn = np.where(df.groupby('user_id')['churn'].transform( \
    lambda x: (x == 'yes').any()), 'yes', df.churn)