我传统上使用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
我想对齐索引,使其与列标题一致。基本上,我希望将列标题保留在原来的位置,但是将所有内容都移动一个单元格。
我希望我的索引只有日期(YYYY-MM-DD)而没有小时,分钟和秒(它总是00:00:00)。如何将索引更改为仅包含日期?
非常感谢。
答案 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中的以下内容:
答案 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()