【问题标题】:Writing a multi-index dataframe to Excel file将多索引数据框写入 Excel 文件
【发布时间】:2016-02-16 02:22:20
【问题描述】:

DataFrame MultiIndex 让我大吃一惊。经过一段时间的努力,我能够用这段代码创建一个 MutliIndex DataFrame

columns = pd.MultiIndex.from_tuples([('Zip', ''),
('All Properties', 'Avg List Price'),('All Properties', 'Median List Price'),
('3 Bedroom', 'Avg List Price'),('3 Bedroom', 'Median List Price'),
('2 Bedroom', 'Avg List Price'),('2 Bedroom', 'Median List Price'),
('1 Bedroom', 'Avg List Price'),('1 Bedroom', 'Median List Price')])
data[0] = ['11111', 'Val1', 'Val2', 'Val3', 'Val4', 'Val5', 'Val6', 'Val7', 'Val8']
df = pd.DataFrame(data, columns=columns)

在我尝试将其写入 excel 文件之前,一切看起来都很好

writer = pd.ExcelWriter('testData.xlsx', engine='openpyxl')
df.to_excel(writer, 'Sheet1')
writer.save()

当我打开 excel 文件时,这就是我得到的。

如果我取消合并 Excel 中的列,所有数据都在那里。

这是我正在尝试创建的图像

我猜测问题与我创建多索引列的方式有关,但我无法弄清楚问题所在。

我在 Mac 上运行 python 2.7。 感谢您的任何意见。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    这对itertools.product 很有用。在你的多索引创建中试试这个:

    from itertools import product
    cols = product(
        ['All Properties', '3 Bedroom', '2 Bedroom', '1 Bedroom'],
        ['Avg List Price', 'Median List Price']
    )
    columns = pd.MultiIndex.from_tuples(list(cols))
    ind = pd.Index(['11111'], name='zip')
    vals = ['Val1', 'Val2', 'Val3', 'Val4', 'Val5', 'Val6', 'Val7', 'Val8']
    df = pd.DataFrame(
        vals, index=ind, columns=columns
    )
    

    问题是:您在为您的 columns 构建 MultiIndex 时包含了 zip(命名您的 index)(可悲的是,没有任何名为 MultiColumns 的东西需要清除消除这种混乱)。您需要分别创建您的索引(这是一个单级普通pandas.Index)和您的列(这是一个两级pandas.MultiIndex),如上所述,当您写入excel时,您应该得到预期的行为。

    【讨论】:

    • 这似乎是一种更“正确”的代码实现方式,但它并不能解决问题。
    • @Adrian 啊,我错误地阅读了 OP 的 MultiIndex 结构/相信它根据我的误读创造了额外的价值。哎呀。
    【解决方案2】:

    这是一个错误,将在 0.17.1 版本中修复,或者您可以使用engine='xlsxwriter'

    https://github.com/pydata/pandas/pull/11328

    【讨论】:

    • 升级到开发版本解决了这个问题。谢谢。
    猜你喜欢
    • 2020-04-03
    • 2018-02-26
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多