pandas写作excel:1)从索引空行; 2)每天保持指数

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

我用write_excel()得到的例子

Column1 Column2 Date 2014-01-01 00:00:00 xa 2014-01-02 00:00:00 yb 2014-01-03 00:00:00 zc 
  1. 我想alignment索引,以便它符合列标题。 本质上,我想保留列标题,但是将所有内容都移动一个单元格。

  2. 我希望我的索引只有没有小时,分钟和秒的date(YYYY-MM-DD)(始终是00:00:00)。 我如何改变我的指数只有date?

非常感谢。

什么对我来说是重置索引,以便“date”成为一个普通的列,然后调用dt属性date分配只是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 xa 1 2014-01-02 yb 2 2014-01-03 zc 

接着

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

这导致在excel中的以下内容:

在这里输入图像描述

我认为处理大pandasdate时间索引格式的最简单和容易的方式是pandasExcelWriter本身的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()等

(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)做一个reindexing:

 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 xa 1 2014-01-02 00:00:00 yb 2 2014-01-03 00:00:00 zc In [6]: df = df.set_index(['Date']) In [7]: print ( df ) Column A Column B Date 2014-01-01 00:00:00 xa 2014-01-02 00:00:00 yb 2014-01-03 00:00:00 zc 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 xa 1 2014-01-02 00:00:00 yb 2 2014-01-03 00:00:00 zc In [11]: ## 3. To excel In [12]: writer = ExcelWriter('output.xlsx') In [13]: df.to_excel(writer,'Sheet1',index=False) In [14]: writer.save()