用熊猫中的多个键索引groupby对象

时间:2020-08-03 14:17:08

标签: python pandas

我有一个要转换为字典的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')}

请让我知道我要去哪里错了?预先感谢!

1 个答案:

答案 0 :(得分:0)

您真的很亲密,尝试沿轴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')]}