我输入了一个csv(USERID,Datetime) 为了分析我的用户的活动,我想生成一个Pandas系列,索引是一个日期,列是我的用户(多个系列)。 值将是在该日期聚合的每个用户的活动总和(例如:Day)。
提前致谢。
答案 0 :(得分:0)
虚假数据
n = 100
np.random.seed(1)
userid = np.random.randint(0, 10, n)
datetime = np.random.randint(0, 10, n) + pd.Timestamp('2016-1-1', freq='D')
activity = np.random.randint(0,1000, n)
df = pd.DataFrame({'USERID':userid, 'Datetime':datetime, 'activity':activity})
df.head(10)
Datetime USERID activity
0 2016-01-10 5 788
1 2016-01-01 8 44
2 2016-01-03 9 271
3 2016-01-01 5 670
4 2016-01-08 0 475
5 2016-01-02 0 910
6 2016-01-08 1 499
7 2016-01-10 7 787
8 2016-01-09 6 251
9 2016-01-05 9 666
解决方案
df.groupby(['Datetime', 'USERID'])['activity'].sum().unstack(fill_value=0)
USERID 0 1 2 3 4 5 6 7 8 9
Datetime
2016-01-01 0 166 1091 1878 583 670 0 1524 577 881
2016-01-02 910 0 0 810 2146 706 182 138 1157 0
2016-01-03 0 0 0 0 433 0 1955 1914 566 561
2016-01-04 51 407 598 0 0 0 440 783 0 0
2016-01-05 0 324 662 0 0 0 0 990 79 2849
2016-01-06 0 959 0 230 878 0 0 656 879 300
2016-01-07 1390 100 0 575 0 0 0 806 87 1243
2016-01-08 975 499 503 0 657 0 403 755 0 1271
2016-01-09 342 0 739 617 0 1297 251 1207 324 458
2016-01-10 963 832 0 0 975 1179 0 787 717 145