pandas 按列进行分组,并获得组[duplicate]中行的dict列表

yhived7q  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(110)

此问题已在此处有答案

Pandas groupby and then apply to_dict('records')(3个答案)
3天前关闭。
在这样一个dataframe中:

col1  col2  col3
0     1     3     5
1     1     3     6
2     2     4     5
3     2     4     6

我想按col1分组,并从其他两列中得到一个dict的列表,如下所示:

col1  rows_group  
0     1  [{"col_2": 3, "col_3": 5}, {"col_2": 3, "col_3": 6}]
1     2  [{"col_2": 4, "col_3": 5}, {"col_2": 4, "col_3": 6}]

怎样才能做到呢?

l7wslrjt

l7wslrjt1#

我终于找到了如何用groupby.applyto_dict实现这一点:

df.groupby('col1').apply(
    lambda x: x[['col2', 'col3']].to_dict('records')
).reset_index(name='rows_group')

或者:

(df.set_index('col1').groupby(level=0)
   .apply(lambda g: g.to_dict('records'))
   .reset_index(name='rows_group')
)

输出:

col1                                        rows_group
0     1  [{'col2': 3, 'col3': 5}, {'col2': 3, 'col3': 6}]
1     2  [{'col2': 4, 'col3': 5}, {'col2': 4, 'col3': 6}]

相关问题