У меня есть это:
import pandas as pd
data = pd.DataFrame({'Date': ['2019-01-30', '2019-12-31', '2018-12-31']})
data['Date'] = pd.to_datetime(data.Date)
data['Period'] = data.Date.dt.strftime('Y%G-W%V')
data['Period'] = data['Period'] + '-7'
pd.to_datetime(data.Period, format='Y%G-W%V-%u')
и у меня есть эта ошибка (правка):
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~/ph_test/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
376 try:
--> 377 values, tz = conversion.datetime_to_datetime64(arg)
378 return DatetimeIndex._simple_new(values, name=name, tz=tz)
pandas/_libs/tslibs/conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()
TypeError: Unrecognized value type: <class 'str'>
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-1-963014b2e6bc> in <module>
4 data['Period'] = data.Date.dt.strftime('Y%G-W%V')
5 data['Period'] = data['Period'] + '-7'
----> 6 pd.to_datetime(data.Period, format='Y%G-W%V-%u')
~/ph_test/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, infer_datetime_format, origin, cache)
449 else:
450 from pandas import Series
--> 451 values = _convert_listlike(arg._values, True, format)
452 result = Series(values, index=arg.index, name=arg.name)
453 elif isinstance(arg, (ABCDataFrame, MutableMapping)):
~/ph_test/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
378 return DatetimeIndex._simple_new(values, name=name, tz=tz)
379 except (ValueError, TypeError):
--> 380 raise e
381
382 if arg is None:
~/ph_test/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
345 try:
346 result = array_strptime(arg, format, exact=exact,
--> 347 errors=errors)
348 except tslib.OutOfBoundsDatetime:
349 if errors == 'raise':
pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()
pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()
ValueError: 'G' is a bad directive in format 'Y%G-W%V-%u'
любая идея, в основном я хочу использовать номера недель в ISO 8601, понедельник как день начала недели.
- версия python: 3.7.5
- версия pandas: 0.23.4
Я используя:
data.loc[:, 'end_date'] = data.Period.apply(lambda x:
datetime.strptime(x + 'd7', 'Y%GW%Vd%u'))
, но у меня много данных и отнимает много времени