从列到行元素的Pandas数据操作



我有一个数据集,有数百万行,这里有一个例子,它看起来像什么,我打算输出:

data = [[1, 100, 8], [1, 100, 4], 
[1, 100,6], [2, 100, 0],
[2, 200, 1], [3, 300, 7], 
[4, 400, 2], [5, 100, 6], 
[5, 100, 3], [5, 600, 1]] 

df= pd.DataFrame(data, columns =['user', 'time', 'item'])
print(df)
user  time   item
1   100     8
1   100     4
1   100     6
2   100     0
2   200     1
3   300     7
4   400     2
5   100     6
5   100     3
5   600     1

期望的输出应该是用户在同一时间内消耗的所有项目一起显示在items列中,如下所示

user time   item
1    100    8,4,6
2    100    0
5    100    6,3
2    200    1
3    300    7
4    400    2
5    500    6

例如user: 1time: 100内消耗8,4,6的产物

这是如何实现的?

使用df.astypeGroupby.aggdf.sort_values:

In [489]: out = df.astype(str).groupby(['user', 'time'])['item'].agg(','.join).reset_index().sort_values('time')
In [490]: out
Out[490]: 
user time   item
0    1  100  8,4,6
1    2  100      0
5    5  100    6,3
2    2  200      1
3    3  300      7
4    4  400      2
6    5  600      1

最新更新