|
17 | 17 | from pandas.compat import (lmap, long, zip, range, lrange, lzip,
|
18 | 18 | OrderedDict, is_platform_little_endian)
|
19 | 19 | from pandas import compat
|
20 |
| -from pandas import (DataFrame, Index, Series, notnull, isnull, |
| 20 | +from pandas import (DataFrame, Index, Series, isnull, |
21 | 21 | MultiIndex, Timedelta, Timestamp,
|
22 | 22 | date_range)
|
23 | 23 | from pandas.core.common import PandasError
|
24 | 24 | import pandas as pd
|
25 | 25 | import pandas.core.common as com
|
26 | 26 | import pandas.lib as lib
|
27 | 27 |
|
28 |
| -from pandas.types.api import DatetimeTZDtype |
29 |
| - |
30 | 28 | from pandas.util.testing import (assert_numpy_array_equal,
|
31 | 29 | assert_series_equal,
|
32 | 30 | assert_frame_equal,
|
@@ -1329,185 +1327,6 @@ def test_constructor_with_datetimes(self):
|
1329 | 1327 | .reset_index(drop=True), 'b': i_no_tz})
|
1330 | 1328 | assert_frame_equal(df, expected)
|
1331 | 1329 |
|
1332 |
| - def test_constructor_with_datetime_tz(self): |
1333 |
| - |
1334 |
| - # 8260 |
1335 |
| - # support datetime64 with tz |
1336 |
| - |
1337 |
| - idx = Index(date_range('20130101', periods=3, tz='US/Eastern'), |
1338 |
| - name='foo') |
1339 |
| - dr = date_range('20130110', periods=3) |
1340 |
| - |
1341 |
| - # construction |
1342 |
| - df = DataFrame({'A': idx, 'B': dr}) |
1343 |
| - self.assertTrue(df['A'].dtype, 'M8[ns, US/Eastern') |
1344 |
| - self.assertTrue(df['A'].name == 'A') |
1345 |
| - assert_series_equal(df['A'], Series(idx, name='A')) |
1346 |
| - assert_series_equal(df['B'], Series(dr, name='B')) |
1347 |
| - |
1348 |
| - # construction from dict |
1349 |
| - df2 = DataFrame(dict(A=Timestamp('20130102', tz='US/Eastern'), |
1350 |
| - B=Timestamp('20130603', tz='CET')), |
1351 |
| - index=range(5)) |
1352 |
| - assert_series_equal(df2.dtypes, Series(['datetime64[ns, US/Eastern]', |
1353 |
| - 'datetime64[ns, CET]'], |
1354 |
| - index=['A', 'B'])) |
1355 |
| - |
1356 |
| - # dtypes |
1357 |
| - tzframe = DataFrame({'A': date_range('20130101', periods=3), |
1358 |
| - 'B': date_range('20130101', periods=3, |
1359 |
| - tz='US/Eastern'), |
1360 |
| - 'C': date_range('20130101', periods=3, tz='CET')}) |
1361 |
| - tzframe.iloc[1, 1] = pd.NaT |
1362 |
| - tzframe.iloc[1, 2] = pd.NaT |
1363 |
| - result = tzframe.dtypes.sort_index() |
1364 |
| - expected = Series([np.dtype('datetime64[ns]'), |
1365 |
| - DatetimeTZDtype('datetime64[ns, US/Eastern]'), |
1366 |
| - DatetimeTZDtype('datetime64[ns, CET]')], |
1367 |
| - ['A', 'B', 'C']) |
1368 |
| - |
1369 |
| - # concat |
1370 |
| - df3 = pd.concat([df2.A.to_frame(), df2.B.to_frame()], axis=1) |
1371 |
| - assert_frame_equal(df2, df3) |
1372 |
| - |
1373 |
| - # select_dtypes |
1374 |
| - result = df3.select_dtypes(include=['datetime64[ns]']) |
1375 |
| - expected = df3.reindex(columns=[]) |
1376 |
| - assert_frame_equal(result, expected) |
1377 |
| - |
1378 |
| - # this will select based on issubclass, and these are the same class |
1379 |
| - result = df3.select_dtypes(include=['datetime64[ns, CET]']) |
1380 |
| - expected = df3 |
1381 |
| - assert_frame_equal(result, expected) |
1382 |
| - |
1383 |
| - # from index |
1384 |
| - idx2 = date_range('20130101', periods=3, tz='US/Eastern', name='foo') |
1385 |
| - df2 = DataFrame(idx2) |
1386 |
| - assert_series_equal(df2['foo'], Series(idx2, name='foo')) |
1387 |
| - df2 = DataFrame(Series(idx2)) |
1388 |
| - assert_series_equal(df2['foo'], Series(idx2, name='foo')) |
1389 |
| - |
1390 |
| - idx2 = date_range('20130101', periods=3, tz='US/Eastern') |
1391 |
| - df2 = DataFrame(idx2) |
1392 |
| - assert_series_equal(df2[0], Series(idx2, name=0)) |
1393 |
| - df2 = DataFrame(Series(idx2)) |
1394 |
| - assert_series_equal(df2[0], Series(idx2, name=0)) |
1395 |
| - |
1396 |
| - # interleave with object |
1397 |
| - result = self.tzframe.assign(D='foo').values |
1398 |
| - expected = np.array([[Timestamp('2013-01-01 00:00:00'), |
1399 |
| - Timestamp('2013-01-02 00:00:00'), |
1400 |
| - Timestamp('2013-01-03 00:00:00')], |
1401 |
| - [Timestamp('2013-01-01 00:00:00-0500', |
1402 |
| - tz='US/Eastern'), |
1403 |
| - pd.NaT, |
1404 |
| - Timestamp('2013-01-03 00:00:00-0500', |
1405 |
| - tz='US/Eastern')], |
1406 |
| - [Timestamp('2013-01-01 00:00:00+0100', tz='CET'), |
1407 |
| - pd.NaT, |
1408 |
| - Timestamp('2013-01-03 00:00:00+0100', tz='CET')], |
1409 |
| - ['foo', 'foo', 'foo']], dtype=object).T |
1410 |
| - self.assert_numpy_array_equal(result, expected) |
1411 |
| - |
1412 |
| - # interleave with only datetime64[ns] |
1413 |
| - result = self.tzframe.values |
1414 |
| - expected = np.array([[Timestamp('2013-01-01 00:00:00'), |
1415 |
| - Timestamp('2013-01-02 00:00:00'), |
1416 |
| - Timestamp('2013-01-03 00:00:00')], |
1417 |
| - [Timestamp('2013-01-01 00:00:00-0500', |
1418 |
| - tz='US/Eastern'), |
1419 |
| - pd.NaT, |
1420 |
| - Timestamp('2013-01-03 00:00:00-0500', |
1421 |
| - tz='US/Eastern')], |
1422 |
| - [Timestamp('2013-01-01 00:00:00+0100', tz='CET'), |
1423 |
| - pd.NaT, |
1424 |
| - Timestamp('2013-01-03 00:00:00+0100', |
1425 |
| - tz='CET')]], dtype=object).T |
1426 |
| - self.assert_numpy_array_equal(result, expected) |
1427 |
| - |
1428 |
| - # astype |
1429 |
| - expected = np.array([[Timestamp('2013-01-01 00:00:00'), |
1430 |
| - Timestamp('2013-01-02 00:00:00'), |
1431 |
| - Timestamp('2013-01-03 00:00:00')], |
1432 |
| - [Timestamp('2013-01-01 00:00:00-0500', |
1433 |
| - tz='US/Eastern'), |
1434 |
| - pd.NaT, |
1435 |
| - Timestamp('2013-01-03 00:00:00-0500', |
1436 |
| - tz='US/Eastern')], |
1437 |
| - [Timestamp('2013-01-01 00:00:00+0100', tz='CET'), |
1438 |
| - pd.NaT, |
1439 |
| - Timestamp('2013-01-03 00:00:00+0100', |
1440 |
| - tz='CET')]], |
1441 |
| - dtype=object).T |
1442 |
| - result = self.tzframe.astype(object) |
1443 |
| - assert_frame_equal(result, DataFrame( |
1444 |
| - expected, index=self.tzframe.index, columns=self.tzframe.columns)) |
1445 |
| - |
1446 |
| - result = self.tzframe.astype('datetime64[ns]') |
1447 |
| - expected = DataFrame({'A': date_range('20130101', periods=3), |
1448 |
| - 'B': (date_range('20130101', periods=3, |
1449 |
| - tz='US/Eastern') |
1450 |
| - .tz_convert('UTC') |
1451 |
| - .tz_localize(None)), |
1452 |
| - 'C': (date_range('20130101', periods=3, |
1453 |
| - tz='CET') |
1454 |
| - .tz_convert('UTC') |
1455 |
| - .tz_localize(None))}) |
1456 |
| - expected.iloc[1, 1] = pd.NaT |
1457 |
| - expected.iloc[1, 2] = pd.NaT |
1458 |
| - assert_frame_equal(result, expected) |
1459 |
| - |
1460 |
| - # str formatting |
1461 |
| - result = self.tzframe.astype(str) |
1462 |
| - expected = np.array([['2013-01-01', '2013-01-01 00:00:00-05:00', |
1463 |
| - '2013-01-01 00:00:00+01:00'], |
1464 |
| - ['2013-01-02', 'NaT', 'NaT'], |
1465 |
| - ['2013-01-03', '2013-01-03 00:00:00-05:00', |
1466 |
| - '2013-01-03 00:00:00+01:00']], dtype=object) |
1467 |
| - self.assert_numpy_array_equal(result, expected) |
1468 |
| - |
1469 |
| - result = str(self.tzframe) |
1470 |
| - self.assertTrue('0 2013-01-01 2013-01-01 00:00:00-05:00 ' |
1471 |
| - '2013-01-01 00:00:00+01:00' in result) |
1472 |
| - self.assertTrue('1 2013-01-02 ' |
1473 |
| - 'NaT NaT' in result) |
1474 |
| - self.assertTrue('2 2013-01-03 2013-01-03 00:00:00-05:00 ' |
1475 |
| - '2013-01-03 00:00:00+01:00' in result) |
1476 |
| - |
1477 |
| - # setitem |
1478 |
| - df['C'] = idx |
1479 |
| - assert_series_equal(df['C'], Series(idx, name='C')) |
1480 |
| - |
1481 |
| - df['D'] = 'foo' |
1482 |
| - df['D'] = idx |
1483 |
| - assert_series_equal(df['D'], Series(idx, name='D')) |
1484 |
| - del df['D'] |
1485 |
| - |
1486 |
| - # assert that A & C are not sharing the same base (e.g. they |
1487 |
| - # are copies) |
1488 |
| - b1 = df._data.blocks[1] |
1489 |
| - b2 = df._data.blocks[2] |
1490 |
| - self.assertTrue(b1.values.equals(b2.values)) |
1491 |
| - self.assertFalse(id(b1.values.values.base) == |
1492 |
| - id(b2.values.values.base)) |
1493 |
| - |
1494 |
| - # with nan |
1495 |
| - df2 = df.copy() |
1496 |
| - df2.iloc[1, 1] = pd.NaT |
1497 |
| - df2.iloc[1, 2] = pd.NaT |
1498 |
| - result = df2['B'] |
1499 |
| - assert_series_equal(notnull(result), Series( |
1500 |
| - [True, False, True], name='B')) |
1501 |
| - assert_series_equal(df2.dtypes, df.dtypes) |
1502 |
| - |
1503 |
| - # set/reset |
1504 |
| - df = DataFrame({'A': [0, 1, 2]}, index=idx) |
1505 |
| - result = df.reset_index() |
1506 |
| - self.assertTrue(result['foo'].dtype, 'M8[ns, US/Eastern') |
1507 |
| - |
1508 |
| - result = result.set_index('foo') |
1509 |
| - tm.assert_index_equal(df.index, idx) |
1510 |
| - |
1511 | 1330 | def test_constructor_for_list_with_dtypes(self):
|
1512 | 1331 | # TODO(wesm): unused
|
1513 | 1332 | intname = np.dtype(np.int_).name # noqa
|
@@ -2018,3 +1837,39 @@ def test_from_records_len0_with_columns(self):
|
2018 | 1837 | self.assertTrue(np.array_equal(result.columns, ['bar']))
|
2019 | 1838 | self.assertEqual(len(result), 0)
|
2020 | 1839 | self.assertEqual(result.index.name, 'foo')
|
| 1840 | + |
| 1841 | + |
| 1842 | +class TestDataFrameConstructorWithDatetimeTZ(tm.TestCase, TestData): |
| 1843 | + |
| 1844 | + _multiprocess_can_split_ = True |
| 1845 | + |
| 1846 | + def test_from_dict(self): |
| 1847 | + |
| 1848 | + # 8260 |
| 1849 | + # support datetime64 with tz |
| 1850 | + |
| 1851 | + idx = Index(date_range('20130101', periods=3, tz='US/Eastern'), |
| 1852 | + name='foo') |
| 1853 | + dr = date_range('20130110', periods=3) |
| 1854 | + |
| 1855 | + # construction |
| 1856 | + df = DataFrame({'A': idx, 'B': dr}) |
| 1857 | + self.assertTrue(df['A'].dtype, 'M8[ns, US/Eastern') |
| 1858 | + self.assertTrue(df['A'].name == 'A') |
| 1859 | + assert_series_equal(df['A'], Series(idx, name='A')) |
| 1860 | + assert_series_equal(df['B'], Series(dr, name='B')) |
| 1861 | + |
| 1862 | + def test_from_index(self): |
| 1863 | + |
| 1864 | + # from index |
| 1865 | + idx2 = date_range('20130101', periods=3, tz='US/Eastern', name='foo') |
| 1866 | + df2 = DataFrame(idx2) |
| 1867 | + assert_series_equal(df2['foo'], Series(idx2, name='foo')) |
| 1868 | + df2 = DataFrame(Series(idx2)) |
| 1869 | + assert_series_equal(df2['foo'], Series(idx2, name='foo')) |
| 1870 | + |
| 1871 | + idx2 = date_range('20130101', periods=3, tz='US/Eastern') |
| 1872 | + df2 = DataFrame(idx2) |
| 1873 | + assert_series_equal(df2[0], Series(idx2, name=0)) |
| 1874 | + df2 = DataFrame(Series(idx2)) |
| 1875 | + assert_series_equal(df2[0], Series(idx2, name=0)) |
0 commit comments