【发布时间】:2021-09-09 13:29:47
【问题描述】:
我正在尝试合并两列;一个带有日期,另一个带有时间到单个日期时间列中。
df:
date time
---- ----------- ------
0 08 Sep 2021 00:00
1 08 Sep 2021 00:00
2 08 Sep 2021 00:00
3 08 Sep 2021 00:05
4 08 Sep 2021 00:30
我的做法是:
df['datetime'] = df['date'] + ' ' + df['time']
df:
date time datetime
---- ----------- ------ -----------------
0 08 Sep 2021 00:00 08 Sep 2021 00:00
1 08 Sep 2021 00:00 08 Sep 2021 00:00
2 08 Sep 2021 00:00 08 Sep 2021 00:00
3 08 Sep 2021 00:05 08 Sep 2021 00:05
4 08 Sep 2021 00:30 08 Sep 2021 00:30
我试过了:
df['datetime'] = pd.to_datetime(df['datetime'])
我也试过了
df.loc[:, 'datetime'] = pd.to_datetime(df.date.astype(str) + ' ' + df.time.astype(str))
但是,我遇到了同样的错误:
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 649, in parse
ret = self._build_naive(res, default)
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 1235, in _build_naive
naive = default.replace(**repl)
ValueError: hour must be in 0..23
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "pandas\_libs\tslib.pyx", line 534, in pandas._libs.tslib.array_to_datetime
File "pandas\_libs\tslibs\parsing.pyx", line 257, in pandas._libs.tslibs.parsing.parse_datetime_string
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 1368, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 651, in parse
six.raise_from(ParserError(str(e) + ": %s", timestr), e)
File "<string>", line 3, in raise_from
dateutil.parser._parser.ParserError: hour must be in 0..23: 09 Sep 2021 84'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "pandas\_libs\tslib.pyx", line 545, in pandas._libs.tslib.array_to_datetime
TypeError: invalid string coercion to datetime
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 649, in parse
ret = self._build_naive(res, default)
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 1235, in _build_naive
naive = default.replace(**repl)
ValueError: hour must be in 0..23
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\harsh\AppData\Roaming\JetBrains\PyCharmCE2021.2\scratches\scratch_17.py", line 40, in <module>
df.loc[:, 'datetime'] = pd.to_datetime(df.date.astype(str) + ' ' + df.time.astype(str))
File "C:\Program Files\Python39\lib\site-packages\pandas\core\tools\datetimes.py", line 883, in to_datetime
cache_array = _maybe_cache(arg, format, cache, convert_listlike)
File "C:\Program Files\Python39\lib\site-packages\pandas\core\tools\datetimes.py", line 195, in _maybe_cache
cache_dates = convert_listlike(unique_dates, format)
File "C:\Program Files\Python39\lib\site-packages\pandas\core\tools\datetimes.py", line 401, in _convert_listlike_datetimes
result, tz_parsed = objects_to_datetime64ns(
File "C:\Program Files\Python39\lib\site-packages\pandas\core\arrays\datetimes.py", line 2193, in objects_to_datetime64ns
raise err
File "C:\Program Files\Python39\lib\site-packages\pandas\core\arrays\datetimes.py", line 2175, in objects_to_datetime64ns
result, tz_parsed = tslib.array_to_datetime(
File "pandas\_libs\tslib.pyx", line 379, in pandas._libs.tslib.array_to_datetime
File "pandas\_libs\tslib.pyx", line 611, in pandas._libs.tslib.array_to_datetime
File "pandas\_libs\tslib.pyx", line 749, in pandas._libs.tslib._array_to_datetime_object
File "pandas\_libs\tslib.pyx", line 740, in pandas._libs.tslib._array_to_datetime_object
File "pandas\_libs\tslibs\parsing.pyx", line 257, in pandas._libs.tslibs.parsing.parse_datetime_string
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 1368, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "C:\Program Files\Python39\lib\site-packages\dateutil\parser\_parser.py", line 651, in parse
six.raise_from(ParserError(str(e) + ": %s", timestr), e)
File "<string>", line 3, in raise_from
dateutil.parser._parser.ParserError: hour must be in 0..23: 09 Sep 2021 84'
Process finished with exit code 1
如何正确地将两列组合成一个日期时间值?
【问题讨论】: