在pandas中使用多个键索引groupby对象

2024-10-03 21:31:50 发布

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

我有一个pd.DataFrame要转换成字典。字典的键是第一列的值,字典的值是元组或列表中第二列和第三列的值。我试着这样做:

    df 
    form  name  state
    CCH   bla1  act
    BGH   bla2  act
    BGH   bla3  nad
    KMJ   bla4  nad
    FRT   bla5  nad 
    
    

我想让这条记录看起来像这样:

    {CCH:[(bla1, act)], BGH:[(bla2,act),(bla3,nad)],KMJ:[(bla4,nad)],FRT:[(bla5,nad)]}

我目前的代码是:

    df.groupby('form')[['name','state']].apply(tuple).to_dict()

但我得到的结果是:

    {CCH:('name','state'),BGH:('name','state'),KMJ:('name','state'),FRT:('name','state')}

请告诉我哪里出了问题?提前谢谢


Tags: nameformdf字典actstatecchnad
1条回答
网友
1楼 · 发布于 2024-10-03 21:31:50

你真的很接近,试着沿着轴1的apply元组。下面是一个使用dict理解的解决方案:

d = {k: v[['name', 'state']].apply(tuple, axis=1).tolist()
     for k, v in df.groupby('form')}

[外]

{'BGH': [('bla2', 'act'), ('bla3', 'nad')],
 'CCH': [('bla1', 'act')],
 'FRT': [('bla5', 'nad')],
 'KMJ': [('bla4', 'nad')]}

相关问题 更多 >