我有一个用户表,上面列出了他们每天的花费。我想将它们重新排列为每个用户一行,并用列表示他们每天花了多少钱。在
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
....
我想把桌子折叠成表格
^{pr2}$现在,这段代码将每日列(周一、周二、周三等)初始化为全零,然后将每个列中的每日支出数据放入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()
有什么方法可以让我使用更多的pandas正确的操作来避免for循环或使其更快?在
谢谢。在
或者,如果需要自定义聚合函数,请使用
^{pr2}$pivot_table
:你可以利用数据帧.pivot为了达到这个目的。如果将表存储在名为df的数据帧中,则代码将为
相关问题 更多 >
编程相关推荐