gpt4 book ai didi

python - 如何计算基于另一列的两列的唯一值? (每个身份证)

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:34 25 4
gpt4 key购买 nike

我有 600 万笔交易数据,因此我需要一些函数来快速运行。基本上,我有唯一的客户 ID 和他们预订的汽车类别,最后实际驾驶。客户可能有一次或多次租车经历。对于每个时间点的特定客户,我想计算他/她有多少独特的不同汽车类别体验,结合独特的汽车类别(预订和驾驶)

其实我的数据连这个顺序都没有,也就是说id和dates都没有排序。下面显示的布局是为了方便起见。如果你也能处理未排序的问题就好了!

谢谢!

数据如下所示:

id  date reserved drove
1 2017 A B
1 2018 B A
1 2019 A C
2 2017 A B
2 2018 C D
3 2018 D D

我想要这样的结果:

id  date  experience
1 2017 2 #(A+B)
1 2018 2 #still the same as 2017 because this customer just experienced A and B (A+B)
1 2019 3 #one more experience because C is new car class (A+B+C)
2 2017 2 #(A+B)
2 2018 4 #(A+B+C+D)
3 2018 1 #(D)

最佳答案

它可以用两行来完成(我很确定有人可以在一行中完成):
创建保留和驱动的所有观察值的列表,然后计算内容(使用 cumsum)

df['aux'] = list(map(list, zip(df.reserved, df.drove)))
df['aux_cum'] = [len(set(x)) for x in df.groupby('id')['aux'].apply(lambda x: x.cumsum())]

输出:

   id  date reserved drove     aux  aux_cum
0 1 2017 A B [A, B] 2
1 1 2018 B A [B, A] 2
2 1 2019 A C [A, C] 3
3 2 2017 A B [A, B] 2
4 2 2018 C D [C, D] 4
5 3 2018 D D [D, D] 1

漂亮的格式:

print(df.drop(['reserved','drove','aux'], axis=1)

id date aux_cum
0 1 2017 2
1 1 2018 2
2 1 2019 3
3 2 2017 2
4 2 2018 4
5 3 2018 1

关于python - 如何计算基于另一列的两列的唯一值? (每个身份证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com