pk_cid 表示客户端 ID 每个pk_partition代表em_acount(即已售出的产品)当月的当前状态。因此,如果客户在一月份有 1 个,在二月份也有 1 个,则意味着他在一月份只购买过一次。如果上个月为 1,我想将其余月份更改为 0,以准确查看人们只购买第一个月份的时间。
如果有可能,另一方面,如果一个人留下 -1
你可以创建一个pandas.Series:
a = pd.Series({(15891, '2018-07-28'): 1,
(15891, '2018-08-28'): 0,
(16063, '2018-11-28'): 0,
(16063, '2018-12-28'): 0,
(16063, '2019-01-28'): 0,
(16063, '2019-02-28'): 0,
(16063, '2019-03-28'): 0,
(16063, '2019-04-28'): 0,
(16063, '2019-05-28'): 0,
(16203, '2018-12-28'): 0,
(16203, '2019-01-28'): 1,
(16203, '2019-02-28'): 1,
(16203, '2019-03-28'): 1,
(16203, '2019-04-28'): 1,
(16203, '2019-05-28'): 1,
(16502, '2018-09-28'): 0,
(16502, '2018-10-28'): 1,
(16502, '2018-11-28'): 1,
(16502, '2018-12-28'): 1,
(16502, '2019-01-28'): 1})
所需输出
谢谢
最佳答案
对索引进行排序,然后 groupby
user_id
获取 pct_change
如果更改为 <= 0
,则将值设置为 0 :
serie = pd.Series( {(15891, '2018-07-28'): 1, (15891, '2018-08-28'): 0,
(16063, '2018-11-28'): 0, (16063, '2018-12-28'): 0,
(16063, '2019-01-28'): 0, (16063, '2019-02-28'): 0,
(16063, '2019-03-28'): 0, (16063, '2019-04-28'): 0,
(16063, '2019-05-28'): 0, (16203, '2018-12-28'): 0,
(16203, '2019-01-28'): 1, (16203, '2019-02-28'): 1,
(16203, '2019-03-28'): 1, (16203, '2019-04-28'): 1,
(16203, '2019-05-28'): 1, (16502, '2018-09-28'): 0,
(16502, '2018-10-28'): 1, (16502, '2018-11-28'): 1,
(16502, '2018-12-28'): 1, (16502, '2019-01-28'): 1})
serie.sort_index(inplace=True)
serie [serie.groupby(level=0).pct_change() <= 0 ] = 0
serie
# 15891 2018-07-28 1
# 2018-08-28 0
# 16063 2018-11-28 0
# 2018-12-28 0
# 2019-01-28 0
# 2019-02-28 0
# 2019-03-28 0
# 2019-04-28 0
# 2019-05-28 0
# 16203 2018-12-28 0
# 2019-01-28 1
# 2019-02-28 0
# 2019-03-28 0
# 2019-04-28 0
# 2019-05-28 0
# 16502 2018-09-28 0
# 2018-10-28 1
# 2018-11-28 0
# 2018-12-28 0
# 2019-01-28 0
关于python - 如何通过 ID 保留第一个条目? Pandas python ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61658590/