Python:基于数据框架的groupby结果创建子列表

2024-09-30 06:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,格式如下:

    Timestamp       X      Y       Name   PlayerID
        0           0      0.5    Albert     1
       100          0      0.3    Albert     1 
       200          0      0.5    Albert     1
       300          0      0.6    Albert     1
        0          -22     4.8    Gregoire   2
       100         -32      5     Gregoire   2
       200         -11     3.4    Gregoire   2
       300         -23     4.4    Gregoire   2

我需要的是一个字典,其中键是唯一的时间戳值,字典的值需要是包含属于该时间戳的项的列表的列表。这意味着:

        {'0': [ ['0','0.5','Albert','1'], ['-22','4.8','Gregoire','2'] ]
        '100': [ ['0','0.3','Albert','1'], ['-32','5','Gregoire','2'] ]
        '200': [ ['0','0.5','Albert','1'], ['-11','3.4','Gregoire','2'] ]
        '300': [ ['0','0.6','Albert','1'], ['-23','4.4','Gregoire','2'] ] }

我将以下代码放在一起,但它只提供了一个字典,其中包含一个作为键的时间戳,值是属于该时间戳的所有项的列表:

df.set_index('Timestamp').stack().groupby('Timestamp').apply(list).to_dict()

输出:

        {'0':  ['0','0.5','Albert','1','-22','4.8','Gregoire','2']
        '100': ['0','0.3','Albert','1','-32','5','Gregoire','2'] 
        '200': ['0','0.5','Albert','1','-11','3.4','Gregoire','2'] 
        '300': ['0','0.6','Albert','1','-23','4.4','Gregoire','2'] }

有办法吗?我猜在这行代码中可以更改某些内容来创建子列表,而不是一个列表,但我还没有弄清楚如何创建子列表。谢谢你的帮助!你知道吗


Tags: 数据代码namedf列表index字典stack
1条回答
网友
1楼 · 发布于 2024-09-30 06:29:13

你觉得这样行吗:

df['Result'] = df.set_index('Timestamp').values.tolist()
df = df.groupby('Timestamp')['Result'].apply(list)

df.to_dict()

{0: [[0L, 0.5, 'Albert', 1L], [-22L, 4.8, 'Gregoire', 2L]],
 200: [[0L, 0.5, 'Albert', 1L], [-11L, 3.4, 'Gregoire', 2L]],
 100: [[0L, 0.3, 'Albert', 1L], [-32L, 5.0, 'Gregoire', 2L]],
 300: [[0L, 0.6, 'Albert', 1L], [-23L, 4.4, 'Gregoire', 2L]]}

相关问题 更多 >

    热门问题