我试图交叉分析数据集以分析网络浏览行为等序列:
df = pd.DataFrame({'CustId' : [111,111,222,333,333,333],
'Page': ['A','B','A','A','B','C']
})
对于每个CustId,我想最终得到CustID vs Page的交叉表:
数据集已经订购,因为我对分析序列感兴趣。事实上,下一步将是执行组合计数,即多少个CustId遵循路径A | B,多少A |,多少A | B | C
我已经开始这样做,而我能找到的最接近的是:
df2=pd.pivot_table(df,index=['CustId'],values=['Page'],aggfunc='first')
但这显然只返回第一个值。只是提到我的数据集是巨大的(4000万条记录......)。
如果您能帮助我,请提前致谢,我们非常感谢。
答案 0 :(得分:1)
这是一种方式
df.groupby('CustId').Page.apply(list).apply(pd.Series).fillna('')
Out[729]:
0 1 2
CustId
111 A B
222 A
333 A B C