我有一个像这样的字典:
{"key1":[0.], "key2":{"a":[0.],"b":[0.],"c":[0.]}, "key3":[0.]}
是否有一种优雅的方法来创建带有嵌套键a,b,c
作为子列的Pandas DataFrame?
所有list
都包含float
个值。
+------+-----------+------+
| key1 | key2 | key3 |
+------+-----------+------+
| | a | b | c | |
+------+---+---+---+------+
| 0 | 0 | 0 | 0 | 0 |
+------+---+---+---+------+
答案 0 :(得分:2)
这是一个漫长的方法。请注意,列的第二层应该有一个值。我将其设置为0
,此处尚未指定。
d = {"key1":[0.], "key2":{"a":[1.],"b":[2.],"c":[3.]}, "key3":[4.]}
cols, data = [], []
for k, v in d.items():
if not isinstance(v, dict):
cols.append((k, 0))
data.append(v)
else:
for k2, v2 in v.items():
cols.append((k, k2))
data.append(v2)
df = pd.DataFrame(list(zip(*data)), columns=pd.MultiIndex.from_tuples(cols))
print(df)
key1 key2 key3
0 a b c 0
0 0.0 1.0 2.0 3.0 4.0