首页 > 解决方案 > Pandas 只在 excel 中编写部分代码

问题描述

我的字典看起来像这样(缩短版):

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()

我得到一个打印出来的样子:打印 df

当我尝试使用 df.to_excel() 将其写入 excel 时。它只写出代码的最后一部分,所以最后一组数据来自我的数据框中的“字符串”和“数字”。更好的可视化示例:excel里面写的是什么

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

标签: pythonexcelpandasdictionarydataframe

解决方案


在您的示例代码中

{('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 中导入: 在此处输入图像描述


推荐阅读