我正在努力创作这个
DataFrame
A B
x y
a 1 2 1
2 6 3
c 2 7 2
从这两个词典看来就足够了:
data = {'A': [2,6,7],
'B': [1,3,2]}
index = {'x': ['a', 'a', 'c'],
'y': [1, 2, 2]}
我尝试了几种方法都没有成功,其中:
dfm = pd.DataFrame.from_records(data=data, index=index)
索引大小不正确,是 2 而不是 3。我知道将索引字典拆分为数组和列表的替代方案:
labels = [['a', 'a', 'c'], [1, 2, 2]]
index = pd.MultiIndex.from_arrays(labels, names=['x','y'])
dfm = pd.DataFrame(data, index=index)
但这不是很优雅。
我认为最干净的方法是将
index
放入数据框,然后 将其转换为 MultiIndex。
dfm = pd.DataFrame(
data,
index=pd.MultiIndex.from_frame(pd.DataFrame(index)),
)
A B
x y
a 1 2 1
2 6 3
c 2 7 2
但是“解压”字典可能会更节省内存。
dfm = pd.DataFrame(
data,
index=pd.MultiIndex.from_arrays(list(index.values()), names=index.keys()),
)
(相同结果)