将嵌套字典转换为多列索引数据框

时间:2021-01-05 06:36:47

标签: python pandas

我有以下数据框:

| Week | info |
| ---- | ---- |
| 1    |{'Info': 'text', 'value': 94615}, {'Info': 'text_2', 'value': 111968}|
| 2    |{'Info': 'text', 'value': 234}, {'Info': 'text_2', 'InfoB': 236}|
| 3    |{'Info': 'text', 'value': 524523}, {'Info': 'text_2', 'InfoB': 5555}|

我想打开 info 下的字典,我想我应该将数据框重新整形为多列索引......也许可以将其转换为多列索引数据框,如下所示:

>
| Week | info             |
|      | text   | text_2  |
| ---- | ------ | ------- |
| 1    | 94615  | 111968  |  
| 2    | 234    | 236     |  
| 3    | 524523 | 5555    |  

有什么建议我该怎么做? 另外,对这些数据执行聚合的最佳方法是什么(例如文本的平均值、第 1 周的总和)数据透视表?

1 个答案:

答案 0 :(得分:1)

我认为首先有必要改变字典的格式,然后像这样转换为DataFrame:

L =  [dict([tuple(y.values()) for y in x]) for x in df.pop('info')]

df = df.join(pd.DataFrame(L, index=df.index))
print (df)
   Week    text  text_2
0     1   94615  111968
1     2     234     236
2     3  524523    5555

另一个想法:

f = lambda x: dict([tuple(y.values()) for y in x])
df = df.join(pd.json_normalize(df.pop('info').apply(f)))