当我想将具有元组键的字典转换为具有多索引的数据帧时,我使用了pandas.DataFrame.from_dict方法。但是我资助的结果似乎是错误的。 这是我的代码:
dict_var1 = Counter({('w1', 's1'): 47, ('w2', 's1'): 40, ('w3', 's2'): 35, ('w1', 's3'): 30, ('w4', 's4'): 28})
frame_var1 = pd.DataFrame.from_dict(dict_var1, orient='index', columns=['num'])
print(frame_var1)
结果是:
num (w1, s1) 47 (w2, s1) 40 (w3, s2) 35 (w1, s3) 30 (w4, s4) 28
框架的索引不是多层的。我对结果非常困惑。谁能评论: 1.此功能为什么会得到此结果? 2.如何实现我的目标?
希望得到答复。非常感谢。
答案 0 :(得分:4)
使用MultiIndex
创建系列,对于一列DataFrame使用Series.to_frame
:
frame_var1 = pd.Series(dict_var1).to_frame('num')
print(frame_var1)
num
w1 s1 47
w2 s1 40
w3 s2 35
w1 s3 30
w4 s4 28
另一种解决方案是由元组使用MultiIndex.from_tuples
创建MultiIndex
:
mux = pd.MultiIndex.from_tuples(dict_var1.keys())
frame_var1 = pd.DataFrame(list(dict_var1.values()), index=mux, columns=['num'])
print(frame_var1)
num
w1 s1 47
w2 s1 40
w3 s2 35
w1 s3 30
w4 s4 28