gpt4 book ai didi

python - Pandas value_counts 进入新列

转载 作者:行者123 更新时间:2023-11-28 20:39:22 25 4
gpt4 key购买 nike

我有一个时间序列数据集,看起来有点像

ts                  userid  v1   v2
2016-04-23 10:50:12 100001 10 ac
2016-04-23 11:23:29 100002 11 ad
2016-04-23 11:56:57 100002 11 ad
2016-04-23 12:33:38 100001 12 ae
2016-04-23 13:06:43 100001 13 aa
2016-04-23 14:16:34 100001 14 ag
2016-04-23 15:26:39 100002 15 ab
2016-04-23 23:29:31 100003 23 aw

我想为每个用户提取 v1 的计数 - 到一个类似于

的新 DataFrame 中
userid   v1_0 ... v1_10 v1_11 v1_12 v1_13 v1_14 v1_15 ... v1_23
100001 0 ... 1 0 1 1 1 0 ... 0
100002 0 ... 0 2 0 0 0 1 ... 0
100003 0 ... 0 0 0 0 0 0 ... 1
  • v1一天中的小时数(最多 24 个值),因此意味着要添加 24 个新列
  • v2表示事件类型
  • v1_11 对于用户 ID 100002 是 2,因为在上午 11 点到中午之间有 2 个事件

有人可以建议如何使用 pandas 实现这一点吗?

提前致谢。


这是重新创建原始 DataFrame 的片段,

import pandas as pd

l1 = ['2016-04-23 10:50:12', '2016-04-23 11:23:29', '2016-04-23 11:56:57',
'2016-04-23 12:33:38', '2016-04-23 13:06:43', '2016-04-23 14:16:34',
'2016-04-23 15:26:39', '2016-04-23 23:29:31']
l2 = [100001, 100002, 100002, 100001, 100001, 100001, 100002, 100003]
l3 = [10, 11, 11, 12, 13, 14, 15, 23]
l4 = ['ac','ad','ad','ae', 'aa','ag', 'ab', 'aw']
df = pd.DataFrame({'ts':l1, 'userid':l2, 'v1':l3, 'v2':l4})

最佳答案

你可以用交叉表来做:

pd.crosstab(df['userid'], df['v1'])
Out[30]:
v1 10 11 12 13 14 15 23
userid
100001 1 0 1 1 1 0 0
100002 0 2 0 0 0 1 0
100003 0 0 0 0 0 0 1

有关其他替代方案,请查看 this answer .

关于python - Pandas value_counts 进入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356690/

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