ENH: to_csv() date formatting by qwhelan · Pull Request #4313 · pandas-dev/pandas (original) (raw)
This commit adds support for formatting datetime object output from to_csv()
closes #2583
In [3]: spx = DataReader('^GSPC', data_source='yahoo')
In [4]: spx.head()
Out[4]:
Open High Low Close Volume Adj Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99 3991400000 1132.99
2010-01-05 1132.66 1136.63 1129.66 1136.52 2491020000 1136.52
2010-01-06 1135.71 1139.19 1133.95 1137.14 4972660000 1137.14
2010-01-07 1136.27 1142.46 1131.32 1141.69 5270680000 1141.69
2010-01-08 1140.52 1145.39 1136.22 1144.98 4389590000 1144.98
In [5]: spx.to_csv('spx_temp.csv', date_format='%Y%m%d')
In [6]: !head spx_temp.csv Date,Open,High,Low,Close,Volume,Adj Close 20100104,1116.56,1133.87,1116.56,1132.99,3991400000,1132.99 20100105,1132.66,1136.63,1129.66,1136.52,2491020000,1136.52 20100106,1135.71,1139.19,1133.95,1137.14,4972660000,1137.14 20100107,1136.27,1142.46,1131.32,1141.69,5270680000,1141.69 20100108,1140.52,1145.39,1136.22,1144.98,4389590000,1144.98 20100111,1145.96,1149.74,1142.02,1146.98,4255780000,1146.98 20100112,1143.81,1143.81,1131.77,1136.22,4716160000,1136.22 20100113,1137.31,1148.4,1133.18,1145.68,4170360000,1145.68 20100114,1145.68,1150.41,1143.8,1148.46,3915200000,1148.46
The date_format=
keyword will be applied to every element of a DatetimeIndex (index or columns) and DatetimeBlock (values). It works for both the Python engine and the new Cython engine:
In [7]: datetimes = DataFrame({spx.index[0]: spx.index}, index=spx.index).head()
In [8]: datetimes
Out[8]:
2010-01-04
Date
2010-01-04 2010-01-04 00:00:00
2010-01-05 2010-01-05 00:00:00
2010-01-06 2010-01-06 00:00:00
2010-01-07 2010-01-07 00:00:00
2010-01-08 2010-01-08 00:00:00
In [9]: datetimes.to_csv('datetimes_temp.csv', date_format='%m/%d/%Y')
In [10]: !head datetimes_temp.csv Date,01/04/2010 01/04/2010,01/04/2010 01/05/2010,01/05/2010 01/06/2010,01/06/2010 01/07/2010,01/07/2010 01/08/2010,01/08/2010
In [11]: datetimes.to_csv('datetimes_temp.csv', date_format='%m/%d/%Y', engine='python')
In [12]: !head datetimes_temp.csvDate,01/04/2010 01/04/2010,01/04/2010 01/05/2010,01/05/2010 01/06/2010,01/06/2010 01/07/2010,01/07/2010 01/08/2010,01/08/2010
Let me know if there are any questions or issues.