【问题标题】:Pandas writes only part of the code in excelPandas 只在 excel 中编写部分代码
【发布时间】:2018-12-07 08:14:35
【问题描述】:

我的字典是这样的(缩短版):

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.to_excel() 将其写入 excel 时。它只写出代码的最后一部分,所以最后一组数据来自我的数据框中的“字符串”和“数字”。更好的可视化示例:

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

【问题讨论】:

    标签: python excel pandas dictionary dataframe


    【解决方案1】:

    在你的示例代码中

    {('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 中导入:

    【讨论】:

    • 是的,但仅适用于第一组数据,而不是整个数据。
    • 如果我打印我的字典,我会得到这样的输出,也许这就是为什么它只打印最后一个。
    • 我认为您问题中的示例代码与您在本地脚本中使用的示例代码不同。 DataFrame 仅使用答案中显示的数字创建。其他数字不属于您的字典,因此不属于创建的 DataFrame。并将变量“dict”重命名为“mydict”或其他名称。 'dict' 是 Python 本身的保留关键字。当使用它来分配变量时,您会得到有趣的副作用。
    • 感谢您的建议!我认为这也是问题所在,因为它们是我变量中的多个字典。它只打印一个到excel。我不知道如何解决它。
    猜你喜欢
    • 2023-03-03
    • 2018-02-20
    • 1970-01-01
    • 2023-03-31
    • 2013-08-09
    • 2014-06-04
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多