diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 1798a35168265..a54227e7e6f18 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -37,7 +37,7 @@ is_object_dtype, is_extension_type, is_datetimetz, - is_datetime64_dtype, + is_datetime64_any_dtype, is_datetime64tz_dtype, is_bool_dtype, is_integer_dtype, @@ -1084,7 +1084,7 @@ def to_records(self, index=True, convert_datetime64=True): y : recarray """ if index: - if is_datetime64_dtype(self.index) and convert_datetime64: + if is_datetime64_any_dtype(self.index) and convert_datetime64: ix_vals = [self.index.to_pydatetime()] else: if isinstance(self.index, MultiIndex): diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index 53083a602e183..c657b2d0e2ad0 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -2,15 +2,14 @@ from __future__ import print_function -from numpy import nan -import numpy as np +import datetime -from pandas import compat -from pandas import (DataFrame, Series, MultiIndex, Timestamp, - date_range) +import pytz +import numpy as np import pandas.util.testing as tm - +from numpy import nan +from pandas import DataFrame, MultiIndex, Series, Timestamp, compat, date_range from pandas.tests.frame.common import TestData @@ -179,3 +178,31 @@ def test_to_records_with_unicode_index(self): .to_records() expected = np.rec.array([('x', 'y')], dtype=[('a', 'O'), ('b', 'O')]) tm.assert_almost_equal(result, expected) + + def test_to_records_with_tz_gmt(self): + data = [datetime.datetime.now(pytz.timezone('UTC')) for _ in range(10)] + df = DataFrame({'datetime': data}) + df.set_index('datetime', inplace=True) + dfgmt = df.tz_convert("GMT") + tm.assert_frame_equal(df.to_records()['datetime'][0].tzinfo, + dfgmt.to_records()['datetime'][0].tzinfo) + + def test_to_records_with_tz_convert_to_utc(self): + data_utc = [datetime.datetime.now( + pytz.timezone('UTC')) for _ in range(10)] + df = DataFrame({'datetime': data_utc}) + data_gmt = [datetime.datetime.now( + pytz.timezone('GMT')) for _ in range(10)] + df2 = DataFrame({'datetime': data_gmt}) + df.set_index('datetime', inplace=True) + df2.set_index('datetime', inplace=True) + dfgmt = df2.tz_convert("UTC") + tm.assert_frame_equal(df.to_records()['datetime'][0].tzinfo, + dfgmt.to_records()['datetime'][0].tzinfo) + + def test_to_records_with_tzinfo(self): + data = [datetime.datetime.now(pytz.timezone('UTC')) for _ in range(10)] + df = DataFrame({'datetime': data}) + df.set_index('datetime', inplace=True) + tm.assert_frame_equal(df.index.tzinfo, + df.to_records()['datetime'][0].tzinfo)