Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is pandas not formatting dates with date_format?

Why is pandas not formatting dates with date_format argument of to_csv?

pandas.DataFrame([datetime.datetime.now().date()]).to_csv(date_format="%Y %b")
',0\n0,2025-07-31\n'
like image 341
Hugo Trentesaux Avatar asked Oct 31 '25 02:10

Hugo Trentesaux


1 Answers

Pandas doesn't support date - yet. Pandas was built on top of NumPy which only has a single 64-bit datetime type, datetime64[ns]. date values are stored as Objects.

ser=pd.Series([date.today()]) 
print(ser.dtype)  
-----
object

If you try to format the value, you get an error

ser.dt.strftime("%Y %b")  
---
...
AttributeError: Can only use .dt accessor with datetimelike values. Did you mean: 'at'?

You need to parse the object into a datetime first, then format it:

pd.to_datetime(ser).dt.strftime("%Y %b")
-----
0    2025 Jul

In the future Pandas will use Arrow as the backend, which does support dates. You can use it today as well if you specify the series type explicitly:

ser=pd.Series([date.today()],dtype="date32[pyarrow]")
ser.dt.strftime("%Y %b")
-----
0    2025 Jul
dtype: string[pyarrow]
like image 114
Panagiotis Kanavos Avatar answered Nov 02 '25 17:11

Panagiotis Kanavos