到目前为止我的问题是。我的Pandas版本是0.15.2,我正在使用python2.7。我正在尝试将包含多索引列的数据框导出到没有垂直索引的excel。这充分概括了我的问题:
# imports
>>> import pandas as pd
>>> import numpy as np
# setting columns
>>> level_one = ['a']*3 + ['b']*3 + ['c']*3
>>> level_two = ['1', '2', '3']*3
>>> columns = [np.array(level_one), np.array(level_two)]
# making the dataframe
>>> df = pd.DataFrame(index=range(10), columns=columns)
>>> series = pd.Series({k:k**2 for k in range(10)})
>>> df[first_col] = series
>>> first_col = df.columns.tolist()[0]
>>> df
a b c
1 2 3 1 2 3 1 2 3
0 0 NaN NaN NaN NaN NaN NaN NaN NaN
1 1 NaN NaN NaN NaN NaN NaN NaN NaN
2 4 NaN NaN NaN NaN NaN NaN NaN NaN
3 9 NaN NaN NaN NaN NaN NaN NaN NaN
4 16 NaN NaN NaN NaN NaN NaN NaN NaN
5 25 NaN NaN NaN NaN NaN NaN NaN NaN
6 36 NaN NaN NaN NaN NaN NaN NaN NaN
7 49 NaN NaN NaN NaN NaN NaN NaN NaN
8 64 NaN NaN NaN NaN NaN NaN NaN NaN
9 81 NaN NaN NaN NaN NaN NaN NaN NaN
所以,到目前为止一切正常。现在,当我导出到csv时,这两种方法都在数据完整性方面起作用(没有相对于头的数据移动,尽管它在第一级中重复了每个元素)。你知道吗
>>> import os
>>> path = os.path.join(os.path.expanduser('~'), 'test.csv')
>>> df.to_csv(path)
>>> df.to_csv(path, index=False)
但是,对于ExcelWriter,它执行以下操作:
>>> import os
>>> path = os.path.join(os.path.expanduser('~'), 'test.xlsx')
>>> writer = pd.ExcelWriter(path)
>>> df.to_excel(writer, 'Sheet 1')
>>> df.to_excel(writer, 'Sheet 2', index=False)
>>> writer.save()
如您所见,它消除了索引,但不在列标题中,从而导致数据移位。有解决办法吗?在我的实际数据集中,实际的“索引”有重复的元素和间隔符,因此不适合用作索引。你知道吗
所以我在文档中找不到任何东西来解决这个问题,但是我找到了一个临时的解决方案。你知道吗
然后,我在索引和标题关闭的情况下导出。它可以工作,没有标题格式,但这是一个不错的修复。你知道吗
目前,只适用于2级标题,我可以概括,但对于我的需要,现在没有必要。你知道吗
相关问题 更多 >
编程相关推荐