gpt4 book ai didi

python - 将月份列转换为行并聚合其下的其他列

转载 作者:行者123 更新时间:2023-12-01 08:53:27 25 4
gpt4 key购买 nike

我有这样的数据

user    product     month
A 1011 2
B 2011 2
B 2034 3
C 2078 4
D 1098 1
A 9087 3
A 5017 4
D 1872 1
A 1011 4

等等

我想聚合这些数据,以便将月份列转换为行,就像它们成为标题一样,并且我可以在每个用户下以及他们被访问的月份下使用唯一值聚合“产品”。所以输出应该是这样的

user   product  1  2  3  4  5  6  7  8  9  10  11  12
A 3 0 1 1 2 0 0 0 0 0 0 0 0
B 2 0 1 1 0 0 0 0 0 0 0 0 0
C 1 0 0 0 1 0 0 0 0 0 0 0 0
D 2 2 0 0 0 0 0 0 0 0 0 0 0

我认为我可以使用 Pivot 来完成此操作,但我无法在月份标题下进行聚合。

我想先一步,将产品除以每个月,得到每个月的利用率,例如:

user   product  1   2     3     4     5  6  7  8  9  10  11  12
A 3 0 0.33 0.33 0.66 0 0 0 0 0 0 0 0
B 2 0 0.50 0.50 0 0 0 0 0 0 0 0 0
C 1 0 0 0 1 0 0 0 0 0 0 0 0
D 2 1 0 0 0 0 0 0 0 0 0 0 0

最佳答案

使用groupby + nunqiue获取前两列,然后使用get_dummies获取其他列

s1=df.groupby('user').product.nunique()
s2=df.set_index('user').month.astype(str).str.get_dummies().sum(level=0)
pd.concat([s1,s2.div(s1,axis=0)],1)
Out[121]:
product 1 2 3 4
user
A 3 0.0 0.333333 0.333333 0.666667
B 2 0.0 0.500000 0.500000 0.000000
C 1 0.0 0.000000 0.000000 1.000000
D 2 1.0 0.000000 0.000000 0.000000

关于python - 将月份列转换为行并聚合其下的其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52951857/

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