我有一个要转换为字典的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')}
请让我知道我要去哪里错了?预先感谢!
答案 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')]}