File tree Expand file tree Collapse file tree 3 files changed +23
-0
lines changed Expand file tree Collapse file tree 3 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,26 @@ def time_frame(self, kind):
55
55
self .df .to_csv (self .fname )
56
56
57
57
58
+ class ToCSVMultiIndexUnusedLevels (BaseIO ):
59
+
60
+ fname = "__test__.csv"
61
+
62
+ def setup (self ):
63
+ df = DataFrame ({"a" : np .random .randn (100_000 ), "b" : 1 , "c" : 1 })
64
+ self .df = df .set_index (["a" , "b" ])
65
+ self .df_unused_levels = self .df .iloc [:10_000 ]
66
+ self .df_single_index = df .set_index (["a" ]).iloc [:10_000 ]
67
+
68
+ def time_full_frame (self ):
69
+ self .df .to_csv (self .fname )
70
+
71
+ def time_sliced_frame (self ):
72
+ self .df_unused_levels .to_csv (self .fname )
73
+
74
+ def time_single_index_frame (self ):
75
+ self .df_single_index .to_csv (self .fname )
76
+
77
+
58
78
class ToCSVDatetime (BaseIO ):
59
79
60
80
fname = "__test__.csv"
Original file line number Diff line number Diff line change @@ -592,6 +592,7 @@ Performance improvements
592
592
- Performance improvement in :meth: `Series.mad ` (:issue: `43010 `)
593
593
- Performance improvement in :func: `merge ` (:issue: `43332 `)
594
594
- Performance improvement in :func: `to_csv ` when index column is a datetime and is formatted (:issue: `39413 `)
595
+ - Performance improvement in :func: `to_csv ` when :class: `MultiIndex ` contains a lot of unused levels (:issue: `37484 `)
595
596
- Performance improvement in :func: `read_csv ` when ``index_col `` was set with a numeric column (:issue: `44158 `)
596
597
- Performance improvement in :func: `concat ` (:issue: `43354 `)
597
598
-
Original file line number Diff line number Diff line change @@ -186,6 +186,8 @@ def data_index(self) -> Index:
186
186
data_index = Index (
187
187
[x .strftime (self .date_format ) if notna (x ) else "" for x in data_index ]
188
188
)
189
+ elif isinstance (data_index , ABCMultiIndex ):
190
+ data_index = data_index .remove_unused_levels ()
189
191
return data_index
190
192
191
193
@property
You can’t perform that action at this time.
0 commit comments