从列到行元素的 Pandas 数据操作 [复制]

Pandas data manipulation from column to row elements [duplicate]

提问人:Squid Game 提问时间:5/15/2022 更新时间:5/16/2022 访问量:28

问:

我有数百万行的数据集,下面是一个示例,说明它的外观和我打算输出的内容:

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: 18,4,6time: 100

这怎么可能实现?

熊猫 numpy 数据操作

评论

0赞 Squid Game 5/17/2022
@Ynjxsjmh确实如此,非常接近我想要的。这是一个很好的参考。

答:

1赞 Mayank Porwal 5/16/2022 #1

df.astypeGroupby.agg 一起使用并df.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