大熊猫写到excel:1)索引空行; 2)每天保持指数

时间:2015-03-08 19:24:43

标签: python excel pandas

我传统上使用Stata进行数据分析,但我今天一直在探索大熊猫。我成功地复制了我在Stata中做过的一些分析,但是我很难将它导出到excel。

我使用write_excel()

获得的示例
                         Column1  Column2
    Date        
    2014-01-01 00:00:00  x        a
    2014-01-02 00:00:00  y        b
    2014-01-03 00:00:00  z        c
  1. 我想对齐索引,使其与列标题一致。基本上,我希望将列标题保留在原来的位置,但是将所有内容都移动一个单元格。

  2. 我希望我的索引只有日期(YYYY-MM-DD)而没有小时,分钟和秒(它总是00:00:00)。如何将索引更改为仅包含日期?

  3. 非常感谢。

3 个答案:

答案 0 :(得分:4)

对我来说有用的是重置索引以便'日期'成为普通列,然后调用dt属性date仅返回日期部分,并在写入excel传递参数index=False时:

In [34]:

df = df.reset_index()
df['Date'] = df.Date.dt.date
df
Out[34]:
         Date Column1 Column2
0  2014-01-01       x       a
1  2014-01-02       y       b
2  2014-01-03       z       c

然后

df.to_excel(r'c:\data\t.xlsx',index=False)

这导致excel中的以下内容:

enter image description here

答案 1 :(得分:3)

我认为处理pandas DatetimeIndex格式最简单易行的方法是pwaras ExcelWriter本身的kwarg。

datetime_format='yyyy-mm-dd'

例如,

import pandas as pd
import xlsxwriter

'''
Suppose that there is 'df' the pandas dataframe which contains DatetimeIndex(ex. 2015-04-15 10:15:30) as index.
'''

writer = pd.ExcelWriter('result.xlsx', engine='xlsxwriter', datetime_format='yyyy-mm-dd')
df.to_excel(writer, sheet_name='Sheet1')

writer.save()

对于任何其他单元格(批处理/个人)格式,请使用xlsxwriter add_format(),set_column()等。

答案 2 :(得分:1)

(1)模仿你的格式:

import pandas as pd
from pandas import *

df = pd.read_csv('input.txt',sep=',',header=None,names=['Date','Column A','Column B'])

df = df.set_index(['Date'])

(2)进行重建索引:

df = df.reset_index()

(3)优秀

writer = ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1',index=False)
writer.save()

注意: 对于excel编写者,您需要有openpyxl。使用pip install openxl轻松安装。有关此信息:https://openpyxl.readthedocs.org/en/latest/。 或者,写入csv会更简单。


ipython中上述步骤的实现示例:

In [1]: import pandas as pd

In [2]: from pandas import *

In [3]: # 1. Mimicking your format:

In [4]: df = pd.read_csv('input.txt',sep=',',header=None,names=['Date','Column A','Column B'])

In [5]: print ( df )
                  Date Column A Column B
0  2014-01-01 00:00:00        x        a
1  2014-01-02 00:00:00        y        b
2  2014-01-03 00:00:00        z        c

In [6]: df = df.set_index(['Date'])

In [7]: print ( df )
                    Column A Column B
Date                                 
2014-01-01 00:00:00        x        a
2014-01-02 00:00:00        y        b
2014-01-03 00:00:00        z        c

In [8]: ## 2. Doing a reindexing:

In [9]: df = df.reset_index()

In [10]: print ( df )
                  Date Column A Column B
0  2014-01-01 00:00:00        x        a
1  2014-01-02 00:00:00        y        b
2  2014-01-03 00:00:00        z        c

In [11]: ## 3. To excel

In [12]: writer = ExcelWriter('output.xlsx')

In [13]: df.to_excel(writer,'Sheet1',index=False)

In [14]: writer.save()