我有一张用户表,他们每天花费多少钱。我想将它们重新排列成每个用户只有一行,并且列中显示他们每天花费的金额。将多个大熊猫行组合成不同标题的单个记录
user_id day spending
111 mon 15
111 tues 20
111 weds 25
....
122 mon 44
122 tues 34
122 weds 90
122 thurs 26
....
我想表折叠成形式
id mon tues weds thurs fri sat sun
111 15 20 25 16 48 32 40
122 44 34 90 26 20 22 53
眼下这个代码初始化日常列(星期一,星期二,结婚...等)为全零,然后它把for循环中每个列的每日支出数据,除了当天的支出应该为零,这会导致对角矩阵查找表。然后,我总结了整个事情,以获得单行记录中填写的所有值。眼下这个代码工作在一个小数据集,但for循环花费很长的时间对我的完整数据集:
for i,hr in zip(np.arange(len(df)),df['day']):
df.ix[i,hr]=df1_subset.ix[i,"spending"]
# aggregate the users by id and dates
df = df.groupby('id').sum()
什么是我可以多用一些大熊猫,适当的操作,我可以避开的方式为循环或使这个更快?
谢谢。