【发布时间】:2019-03-27 11:06:47
【问题描述】:
当每个客户有多个计划时,他们就会被重复。我想给客户设置状态:
如果他们每个产品都填写了“canceled_at”,则客户状态被取消,但当不是所有产品都填写了“cancelled_at”,而是至少有一个产品时,状态为“降级”,因为他丢失了一个产品。
customer|canceled_at|status
x |3/27/2018 |
x | |
y |2/2/2018 |
y |2/2/2018 |
z |1/1/2018 |
a | |
我已经有取消状态,现在只需要降级
df['status']=(df.groupby('customer')['canceled_at'].
transform(lambda x: x.notna().all()).map({True:'canceled'})).fillna(df.status)
customer|canceled_at|status
x |3/27/2018 |downgrade
x | |downgrade
y |2/2/2018 |canceled
y |2/2/2018 |canceled
z |1/1/2018 |canceled
a | |
【问题讨论】:
标签: python pandas pandas-groupby pandas-loc