在dict的键为元组的情况下,pandas DataFrame.from_dict无法产生正确的multiIndex

时间:2018-11-02 14:33:56

标签: python pandas

当我想将具有元组键的字典转换为具有多索引的数据帧时,我使用了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.如何实现我的目标?

希望得到答复。非常感谢。

1 个答案:

答案 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