熊猫只在Excel中编写部分代码

时间:2018-06-28 09:43:19

标签: python excel pandas dictionary dataframe

我的字典看起来像这样(简化版):

my_dict = {('random_number_1', 'random_number_2'): {'random_string_1': 
'random_number_3'}, ('random_number_1', 'random_number_4'): 
{'random_string_2': 'random_number_5'}, ('random_number_1', 
'random_number_6'): {'random_string_3': 'random_number_7', 
'random_string_4': 'random_number_8', 'random_string_5': 
'random_number_9'}}

{('random_number_10','random_number_11'): {'random_string_6': 
'random_number_12', 'random_string_7': 'random_number_13'}}

我使用以下命令将该字典转换为数据框:

newdict = {(k1, k2):v2 for k1,v1 in my_dict.items() \
                   for k2,v2 in my_dict[k1].items()}

df = (pd.DataFrame( [newdict[i] for i in sorted(newdict)],
                index=pd.MultiIndex.from_tuples([i for i in sorted(newdict.keys())]))
    .reset_index(level=1) 
    .rename(columns={'level_1':'string',0:'number'})) 
df.index = pd.MultiIndex.from_tuples(df.index) 
print df
df.to_excel()

我得到的打印结果如下:print df

当我尝试使用df.to_excel()将其编写为excel时。它只写出代码的最后一部分,所以我数据框中的“字符串”和“数字”中的最后一组数据。更好地可视化的示例:What is written in excel

任何人都知道问题出在哪里?我想在Excel中拥有整个数据框。先感谢您。

1 个答案:

答案 0 :(得分:0)

在您的示例代码中

{('random_number_10','random_number_11'): {'random_string_6': 'random_number_12', 'random_string_7': 'random_number_13'}}

未连接任何变量。

您的DataFrame如下所示(我缩短了字符串以在控制台上完整打印):

df: 
        string number
r_n_1 r_n_2  r_s_1  r_n_3
      r_n_4  r_s_2  r_n_5
      r_n_6  r_s_3  r_n_7
      r_n_6  r_s_4  r_n_8
      r_n_6  r_s_5  r_n_9

我无法使用excel进行测试,但是使用df.to_csv('test.csv')时,您的代码似乎可以正常工作。 test.csv的内容:

    ,,string,number
r_n_1,r_n_2,r_s_1,r_n_3
r_n_1,r_n_4,r_s_2,r_n_5
r_n_1,r_n_6,r_s_3,r_n_7
r_n_1,r_n_6,r_s_4,r_n_8
r_n_1,r_n_6,r_s_5,r_n_9

在LibreOffice中导入: enter image description here