Skip to content

Commit f53bb06

Browse files
hksonnganjreback
authored andcommitted
Improved performance of :meth:DataFrame.to_csv when write datetime dtype data (pandas-dev#25765)
1 parent ecbb0ef commit f53bb06

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

asv_bench/benchmarks/io/csv.py

+18
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,24 @@ def time_frame_date_formatting(self):
5050
self.data.to_csv(self.fname, date_format='%Y%m%d')
5151

5252

53+
class ToCSVDatetimeBig(BaseIO):
54+
55+
fname = '__test__.csv'
56+
timeout = 1500
57+
params = [1000, 10000, 100000]
58+
param_names = ['obs']
59+
60+
def setup(self, obs):
61+
d = '2018-11-29'
62+
dt = '2018-11-26 11:18:27.0'
63+
self.data = DataFrame({'dt': [np.datetime64(dt)] * obs,
64+
'd': [np.datetime64(d)] * obs,
65+
'r': [np.random.uniform()] * obs})
66+
67+
def time_frame(self, obs):
68+
self.data.to_csv(self.fname)
69+
70+
5371
class StringIORewind:
5472

5573
def data(self, stringio_object):

doc/source/whatsnew/v0.25.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ Performance Improvements
249249
- Improved performance of :meth:`pandas.core.groupby.GroupBy.quantile` (:issue:`20405`)
250250
- Improved performance of :meth:`read_csv` by faster tokenizing and faster parsing of small float numbers (:issue:`25784`)
251251
- Improved performance of :meth:`read_csv` by faster parsing of N/A and boolean values (:issue:`25804`)
252+
- Improved performance of :meth:DataFrame.`to_csv` when write datetime dtype data (:issue:`25708`)
252253

253254
.. _whatsnew_0250.bug_fixes:
254255

pandas/core/internals/blocks.py

+1
Original file line numberDiff line numberDiff line change
@@ -2178,6 +2178,7 @@ def to_native_types(self, slicer=None, na_rep=None, date_format=None,
21782178
i8values = self.values.view('i8')
21792179

21802180
if slicer is not None:
2181+
values = values[..., slicer]
21812182
i8values = i8values[..., slicer]
21822183

21832184
from pandas.io.formats.format import _get_format_datetime64_from_values

0 commit comments

Comments
 (0)