File tree 3 files changed +23
-5
lines changed
3 files changed +23
-5
lines changed Original file line number Diff line number Diff line change @@ -257,6 +257,8 @@ pandas 0.7.0
257
257
non-integer index (GH #707)
258
258
- Use right dropna function for SparseSeries. Return dense Series for NA fill
259
259
value (GH #730)
260
+ - Fix Index.format bug causing incorrectly string-formatted Series with
261
+ datetime indexes (# 758)
260
262
261
263
Thanks
262
264
------
Original file line number Diff line number Diff line change @@ -1896,6 +1896,12 @@ def reset_index(self, drop=False):
1896
1896
resetted : DataFrame
1897
1897
"""
1898
1898
new_obj = self .copy ()
1899
+
1900
+ def _maybe_cast (values ):
1901
+ if values .dtype == np .object_ :
1902
+ values = lib .maybe_convert_objects (values )
1903
+ return values
1904
+
1899
1905
if not drop :
1900
1906
if isinstance (self .index , MultiIndex ):
1901
1907
names = self .index .names
@@ -1906,16 +1912,13 @@ def reset_index(self, drop=False):
1906
1912
col_name = 'level_%d' % i
1907
1913
1908
1914
# to ndarray and maybe infer different dtype
1909
- level_values = lev .values
1910
- if level_values .dtype == np .object_ :
1911
- level_values = lib .maybe_convert_objects (level_values )
1912
-
1915
+ level_values = _maybe_cast (lev .values )
1913
1916
new_obj .insert (0 , col_name , level_values .take (lab ))
1914
1917
else :
1915
1918
name = self .index .name
1916
1919
if name is None :
1917
1920
name = 'index' if 'index' not in self else 'level_0'
1918
- new_obj .insert (0 , name , self .index .values )
1921
+ new_obj .insert (0 , name , _maybe_cast ( self .index .values ) )
1919
1922
new_obj .index = np .arange (len (new_obj ))
1920
1923
return new_obj
1921
1924
Original file line number Diff line number Diff line change @@ -4151,6 +4151,19 @@ def test_reset_index(self):
4151
4151
resetted = self .frame .reset_index ()
4152
4152
self .assertEqual (resetted .columns .name , 'columns' )
4153
4153
4154
+ def test_reset_index_right_dtype (self ):
4155
+ time = np .arange (0.0 , 10 , np .sqrt (2 )/ 2 )
4156
+ s1 = Series ((9.81 * time ** 2 ) / 2 ,
4157
+ index = Index (time , name = 'time' ),
4158
+ name = 'speed' )
4159
+ df = DataFrame (s1 )
4160
+
4161
+ resetted = s1 .reset_index ()
4162
+ self .assert_ (resetted ['time' ].dtype == np .float64 )
4163
+
4164
+ resetted = df .reset_index ()
4165
+ self .assert_ (resetted ['time' ].dtype == np .float64 )
4166
+
4154
4167
#----------------------------------------------------------------------
4155
4168
# Tests to cope with refactored internals
4156
4169
You can’t perform that action at this time.
0 commit comments