|
5 | 5 | from datetime import datetime
|
6 | 6 | import numpy as np
|
7 | 7 | import pandas as pd
|
| 8 | +from itertools import product |
| 9 | +import operator as op |
8 | 10 |
|
9 | 11 | from pandas import (DatetimeIndex, Series, DataFrame,
|
10 | 12 | date_range, Index, Timedelta, Timestamp)
|
@@ -331,8 +333,22 @@ def test_loc_datetime_length_one(self):
|
331 | 333 | result = df.loc['2016-10-01T00:00:00':]
|
332 | 334 | tm.assert_frame_equal(result, df)
|
333 | 335 |
|
334 |
| - def test_comparison_to_datetime64(self): |
335 |
| - # GH issue #17965 |
336 |
| - df = DataFrame({'dates': date_range('2000-01-01', '2000-01-05')}) |
337 |
| - date = df['dates'].unique()[0] |
338 |
| - tm.assert_frame_equal(df.loc[df['dates'] == date], df.iloc[:1]) |
| 336 | + comparisonTS = Timestamp('20130101') |
| 337 | + |
| 338 | + @pytest.mark.parametrize('datetimelike,opExp', product( |
| 339 | + [comparisonTS, comparisonTS.to_pydatetime(), |
| 340 | + comparisonTS.to_pydatetime().date(), comparisonTS.to_datetime64()], |
| 341 | + [(op.lt, [True, False, False, False]), |
| 342 | + (op.le, [True, True, False, False]), |
| 343 | + (op.eq, [False, True, False, False]), |
| 344 | + (op.gt, [False, False, False, True])])) |
| 345 | + def test_selection_by_datetimelike(self, datetimelike, opExp): |
| 346 | + # GH issue #17965, test for ability to compare datetime64[ns] columns |
| 347 | + # to datetimelike |
| 348 | + op, exp = opExp |
| 349 | + df = DataFrame({'A': [pd.Timestamp('20120101'), |
| 350 | + pd.Timestamp('20130101'), |
| 351 | + np.nan, pd.Timestamp('20130103')]}) |
| 352 | + result = op(df.A, datetimelike) |
| 353 | + expected = Series(exp, name='A') |
| 354 | + tm.assert_series_equal(result, expected) |
0 commit comments