python - 如何通过 ID 保留第一个条目? Pandas python

标签 python pandas dataframe group-by diff

pk_cid 表示客户端 ID 每个pk_partition代表em_acount(即已售出的产品)当​​月的当前状态。因此,如果客户在一月份有 1 个,在二月份也有 1 个,则意味着他在一月份只购买过一次。如果上个月为 1,我想将其余月份更改为 0,以准确查看人们只购买第一个月份的时间。

如果有可能,另一方面,如果一个人留下 -1

This is what i have

你可以创建一个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})

所需输出

enter image description here

谢谢

最佳答案

对索引进行排序,然后 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/

相关文章:

r - 如何使用R检查变量是否分类?

python - 如何在不破坏字符串的情况下将字符串添加到 set() 中?

python - 对 Pandas 中包含数字和分隔符的字符串进行排序

python - 在单元格中使用条件值在 Pandas DataFrame 中创建循环

python - 导入错误 : No module named 'xlrd'

python - 删除 NaN 值并从下一列中移动值

r - 将字符串连接到数据框列

python - 使用字典在数据集中查找条目

python - python有 'man'吗?

Python/ Pandas /日期时间 : transform entire lists in a column to datetime