我使用pandas==1.2.1
MRE:
x = pd.DataFrame({"date":["20201211", "20201211", "20201212", "20201222", "20201222","20201223",
"20201211", "20201211", "20201212", "20201222", "20201222"],
"userid":["A", "A", "A", "A", "A", "A","B", "B", "B", "B", "B"],
"category":[1,1,2,2,2,1, 33, 33, 33, 34, 34]})
看起来是这样的:
date userid category
0 20201211 A 1
1 20201211 A 1
2 20201212 A 2
3 20201222 A 2
4 20201222 A 2
5 20201223 A 1
6 20201211 B 33
7 20201211 B 33
8 20201212 B 33
9 20201222 B 34
10 20201222 B 34
我想做的是获取每个用户类别更改时的日期
因此,所需的数据帧应如下所示:
user cat_changed changed_cat
A [20201212, 20201223] [2, 1]
B [20201222] [34]
我已经尝试过按用户ID、cate、日期分组,但是从那以后就被卡住了
您可以尝试使用
df.shift
,同时考虑userid
和category
,然后创建一个分组列来分组:您可以首先使用
category
上的diff()
获取转换点,然后索引这些转换并聚合为list
:相关问题 更多 >
编程相关推荐