From 786a50167a5a1a15bc30faa358477287836a29e3 Mon Sep 17 00:00:00 2001 From: ftrihardjo Date: Sun, 31 Jan 2021 04:40:07 +0700 Subject: [PATCH 1/4] pandas-dev issue #36111 --- pandas/tests/io/parser/test_parse_dates.py | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pandas/tests/io/parser/test_parse_dates.py b/pandas/tests/io/parser/test_parse_dates.py index 25d98928f1a6b..a71b9bdb9b284 100644 --- a/pandas/tests/io/parser/test_parse_dates.py +++ b/pandas/tests/io/parser/test_parse_dates.py @@ -34,6 +34,40 @@ date_strategy = st.datetimes() +def test_read_csv_with_custom_date_parser(all_parsers): + # GH36111 + def __custom_date_parser(time): + time = time.astype(np.float) + time = time.astype(np.int) # convert float seconds to int type + return pd.to_timedelta(time, unit="s") + + testdata = StringIO( + """time e n h + 41047.00 -98573.7297 871458.0640 389.0089 + 41048.00 -98573.7299 871458.0640 389.0089 + 41049.00 -98573.7300 871458.0642 389.0088 + 41050.00 -98573.7299 871458.0643 389.0088 + 41051.00 -98573.7302 871458.0640 389.0086 + """ + ) + result = all_parsers.read_csv( + testdata, + delim_whitespace=True, + parse_dates=True, + date_parser=__custom_date_parser, + index_col="time", + ) + expected = pd.DataFrame( + { + "e": [-98573.7297, -98573.7299, -98573.7300, -98573.7299, -98573.7302], + "n": [871458.0640, 871458.0640, 871458.0642, 871458.0643, 871458.0640], + "h": [389.0089, 389.0089, 389.0088, 389.0088, 389.0086], + }, + index=[41047, 41048, 41049, 41050, 41051], + ) + tm.assert_frame_equal(result, expected) + + def test_separator_date_conflict(all_parsers): # Regression test for gh-4678 # From 5848a0dfacf41ed611de5fa753e46b7ae13ef76e Mon Sep 17 00:00:00 2001 From: ftrihardjo Date: Sun, 31 Jan 2021 07:05:50 +0700 Subject: [PATCH 2/4] pandas-dev issue #36111 --- pandas/tests/io/parser/test_parse_dates.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pandas/tests/io/parser/test_parse_dates.py b/pandas/tests/io/parser/test_parse_dates.py index a71b9bdb9b284..ffd3851d3497e 100644 --- a/pandas/tests/io/parser/test_parse_dates.py +++ b/pandas/tests/io/parser/test_parse_dates.py @@ -50,6 +50,7 @@ def __custom_date_parser(time): 41051.00 -98573.7302 871458.0640 389.0086 """ ) + result = all_parsers.read_csv( testdata, delim_whitespace=True, @@ -57,7 +58,8 @@ def __custom_date_parser(time): date_parser=__custom_date_parser, index_col="time", ) - expected = pd.DataFrame( + + expected = DataFrame( { "e": [-98573.7297, -98573.7299, -98573.7300, -98573.7299, -98573.7302], "n": [871458.0640, 871458.0640, 871458.0642, 871458.0643, 871458.0640], @@ -65,6 +67,7 @@ def __custom_date_parser(time): }, index=[41047, 41048, 41049, 41050, 41051], ) + tm.assert_frame_equal(result, expected) From 98d6aa04f93c7b3dd00317d82f35a409fa18eb82 Mon Sep 17 00:00:00 2001 From: ftrihardjo Date: Sun, 31 Jan 2021 08:23:09 +0700 Subject: [PATCH 3/4] pandas-dev issue #36111 --- pandas/tests/io/parser/test_parse_dates.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/io/parser/test_parse_dates.py b/pandas/tests/io/parser/test_parse_dates.py index ffd3851d3497e..f3be607262fcb 100644 --- a/pandas/tests/io/parser/test_parse_dates.py +++ b/pandas/tests/io/parser/test_parse_dates.py @@ -50,7 +50,6 @@ def __custom_date_parser(time): 41051.00 -98573.7302 871458.0640 389.0086 """ ) - result = all_parsers.read_csv( testdata, delim_whitespace=True, @@ -58,14 +57,15 @@ def __custom_date_parser(time): date_parser=__custom_date_parser, index_col="time", ) - + time = [41047, 41048, 41049, 41050, 41051] + time = pd.TimedeltaIndex([pd.to_timedelta(i, unit="s") for i in time]) expected = DataFrame( { "e": [-98573.7297, -98573.7299, -98573.7300, -98573.7299, -98573.7302], "n": [871458.0640, 871458.0640, 871458.0642, 871458.0643, 871458.0640], "h": [389.0089, 389.0089, 389.0088, 389.0088, 389.0086], }, - index=[41047, 41048, 41049, 41050, 41051], + index=time, ) tm.assert_frame_equal(result, expected) From 0745c9262fb55f02a303de3624cc48cba82ca32e Mon Sep 17 00:00:00 2001 From: ftrihardjo Date: Sun, 31 Jan 2021 10:40:06 +0700 Subject: [PATCH 4/4] pandas-dev issue #36111 --- pandas/tests/io/parser/test_parse_dates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/io/parser/test_parse_dates.py b/pandas/tests/io/parser/test_parse_dates.py index f3be607262fcb..884e3875069a3 100644 --- a/pandas/tests/io/parser/test_parse_dates.py +++ b/pandas/tests/io/parser/test_parse_dates.py @@ -58,7 +58,7 @@ def __custom_date_parser(time): index_col="time", ) time = [41047, 41048, 41049, 41050, 41051] - time = pd.TimedeltaIndex([pd.to_timedelta(i, unit="s") for i in time]) + time = pd.TimedeltaIndex([pd.to_timedelta(i, unit="s") for i in time], name="time") expected = DataFrame( { "e": [-98573.7297, -98573.7299, -98573.7300, -98573.7299, -98573.7302],