熊猫,字典列表,其中值是列表。将字典键转换为列名。将值列表中的每个元素转换为一行

时间:2020-04-05 23:54:48

标签: python pandas

我有一个字典列表,其中值是另一个列表

[{111:[1,2,3]},{112:[4,5,6]},{113:[7,8,9]}]

我想将它们放在pandas数据框中,以便字典键为列名,并且列表中的每个元素都有自己的行

所以

df

111    112    113
1        4         7
2        5         8
3        6        9

4 个答案:

答案 0 :(得分:1)

IIUC,您可以编写列表推导并明智地连接数据框轴。

import pandas as pd
d = [ {111: [1, 2, 3]}, {112:[4, 5, 6]}, {113:[7,8,9]}]

df = pd.concat([pd.DataFrame.from_dict(inner_dict,orient='columns') for inner_dict in d],axis=1)

print(df)

   111  112  113
0    1    4    7
1    2    5    8
2    3    6    9

答案 1 :(得分:1)

尝试collections.ChainMap

from collections import ChainMap

d = [{111: [1, 2, 3]}, {112:[4, 5, 6]}, {113:[7,8,9]}]
df = pd.DataFrame({**ChainMap(*d[::-1])})

Out[79]:
   111  112  113
0    1    4    7
1    2    5    8
2    3    6    9

答案 2 :(得分:0)

<button id="b_undo">UnDo Button</button>
<div id="b_container"></div>

答案 3 :(得分:0)

也许这是使用dict理解的吗?

data = [{ 111: [1, 2, 3] }, { 112: [4, 5, 6] }, { 113: [7,8,9] }]
pd.DataFrame({ title: values for column in data for title, values in column.items() })

但是最好将数据存储为{ title: [value] }字典,以便大熊猫可以立即识别。

data = { 111: [1, 2, 3], 112: [4, 5, 6], 113: [7, 8, 9] }
pd.DataFrame(data)