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中取消合并列中的所有数据都在那里。
我猜这个问题与我创建多索引列的方式有关,但我无法弄清问题是什么。
我在Mac上运行python 2.7。 感谢您的任何意见。
答案 0 :(得分:1)
这对itertools.product
很有用。请在您的multiindex创建中尝试此操作:
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
)
问题是:您为列构建MultiIndex时包含了zip(将 index 命名为)(不幸的是,没有任何名为MultiColumns
的存在澄清这种混乱)。您需要分别创建索引(单级正常pandas.Index
)和您的列(两级pandas.MultiIndex
),如上所述,您应该在编写时获得预期的行为优秀。
答案 1 :(得分:1)
这是一个将在0.17.1版本中修复的错误,或者您可以使用engine='xlsxwriter'