鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ pandas轉換成字典

pandas轉換成字典

我有一個這樣的dataframe

clipboard.png

期望把它變成這樣結構的Python字典:

{
    'a':{
        '1':41,
        '2':98,
        '3':53
    },
    'b':{
        '1':15,
        '2':64,
        '3':36
    }
}

想了一天了都沒有頭緒,希望得到大家的解答,以下是快速構造dataframe的語句。

import pandas as pd
df = pd.DataFrame([['a',1,41],['a',2,98],['a',3,53],['b',1,15],['b',2,64],['b',3,36]], columns=['code', 'date','count']) 
回答
編輯回答
硬扛

我是提問者,我自己也想了個辦法。但是我覺得不如“prolifes同學”的答案來的清晰。

分享給大家我的辦法:使用了兩層的字典推倒式。

data = {k:{g.valuesi:g.valuesi for i in range(len(g))} for k,g in df.groupby('code')}

2017年5月20日 09:23
編輯回答
九年囚

有一個to_dict方法參考文檔

2017年1月9日 23:17
編輯回答
陌離殤

def foo(a):
  res = {}
  for i in a:
    res.update(i)
  return res

res = dict(df.groupby('code').apply(lambda a: a.groupby('date').apply(lambda b: dict(b['count']))).apply(foo, axis=1))
2017年7月3日 01:56
編輯回答
莓森
import pandas as pd

df = pd.DataFrame([['a',1,41],['a',2,98],['a',3,53],['b',1,15],['b',2,64],['b',3,36]], columns=['code', 'date','count'])

d = dict()
for _, row in df.iterrows():
    code, data, count = row
    d.setdefault(code, {}).update({str(data): count})

print d
2017年11月25日 04:51