Pandas 写入 excel:1) 来自索引的空行; 2)每天保持索引

Pandas writing to excel: 1) blank row from index; 2) keep index daily

我过去一直使用 Stata 进行数据分析,但我今天一直在探索 pandas。我成功地复制了我在 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. 我想对齐索引,使其与列 headers 对齐。本质上,我想将 headers 列保留在原处,但将所有内容向上移动一个单元格。

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

非常感谢。

对我有用的是重置索引,使 'Date' 成为普通列,然后调用 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 中产生以下结果:

(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) 至 excel

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()

我认为处理 pandas DatetimeIndex 格式的最简单易行的方法是 pandas 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()

对于任何其他单元格 (batch/individual) 格式,请使用 xlsxwriter add_format()、set_column() 等