对于第一个问题,一个简单的groupby和
value_counts
有办法。请注意,在
value_counts()
在下面的代码中,只需将其转换为与所需输出相同格式的实际数据帧。
counts = play_events.groupby('user_id')['song_id'].value_counts().to_frame('count').reset_index()
>>> counts
user_id song_id count
0 102 1 3
1 102 3 1
2 103 4 1
3 104 2 1
counts
,分组依据
user_id
,并将每个文件另存为csv:
for user, data in counts.groupby('user_id', as_index=False):
data.to_csv(str(user)+'_events.csv')
对于您的示例数据帧,这为您提供了3个
csv
学生:
102_events.csv
,
103_events.csv
103\ U事件.csv
. 第一个看起来像:
user_id song_id count
0 102 1 3
1 102 3 1