Skip to content

Commit 38333f4

Browse files
committed
BUG: tweak for DataFrame.to_records datetimeindex fix #1908
1 parent f971840 commit 38333f4

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

pandas/core/common.py

-1
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,6 @@ def _possibly_cast_item(obj, item, dtype):
649649
elif not issubclass(dtype, (np.integer, np.bool_)): # pragma: no cover
650650
raise ValueError("Unexpected dtype encountered: %s" % dtype)
651651

652-
653652
def _is_bool_indexer(key):
654653
if isinstance(key, np.ndarray) and key.dtype == np.object_:
655654
key = np.asarray(key)

pandas/core/frame.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,7 @@ def from_records(cls, data, index=None, exclude=None, columns=None,
10511051

10521052
return DataFrame(mgr)
10531053

1054-
def to_records(self, index=True):
1054+
def to_records(self, index=True, convert_datetime64=True):
10551055
"""
10561056
Convert DataFrame to record array. Index will be put in the
10571057
'index' field of the record array if requested
@@ -1060,16 +1060,20 @@ def to_records(self, index=True):
10601060
----------
10611061
index : boolean, default True
10621062
Include index in resulting record array, stored in 'index' field
1063+
convert_datetime64 : boolean, default True
1064+
Whether to convert the index to datetime.datetime if it is a
1065+
DatetimeIndex
10631066
10641067
Returns
10651068
-------
10661069
y : recarray
10671070
"""
10681071
if index:
1069-
if (com.is_datetime64_dtype(self.index)):
1070-
arrays = [self.index.asobject.values] + [self[c].values for c in self.columns]
1072+
if com.is_datetime64_dtype(self.index) and convert_datetime64:
1073+
ix_vals = [self.index.to_pydatetime()]
10711074
else:
1072-
arrays = [self.index.values] + [self[c].values for c in self.columns]
1075+
ix_vals = [self.index.values]
1076+
arrays = ix_vals + [self[c].values for c in self.columns]
10731077

10741078
count = 0
10751079
index_names = self.index.names

pandas/tests/test_frame.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -2668,10 +2668,14 @@ def test_to_json_except(self):
26682668
df = DataFrame([1, 2, 3])
26692669
self.assertRaises(ValueError, df.to_json, orient="garbage")
26702670

2671-
def test_array_index_asobject(self):
2672-
df = DataFrame([["one", "two", "three"], ["four", "five", "six"]], index=pan.date_range("2012-01-01", "2012-01-02"))
2671+
def test_to_records_dt64(self):
2672+
df = DataFrame([["one", "two", "three"],
2673+
["four", "five", "six"]],
2674+
index=pan.date_range("2012-01-01", "2012-01-02"))
26732675
self.assert_(df.to_records()['index'][0] == df.index[0])
26742676

2677+
rs = df.to_records(convert_datetime64=False)
2678+
self.assert_(rs['index'][0] == df.index.values[0])
26752679

26762680
def test_from_records_to_records(self):
26772681
# from numpy documentation

0 commit comments

Comments
 (0)