I am working with an external data source and I am trying to get Quaterstart(QS) frequency for a particular data field. I am providing a dummy data and code below.
import pandas as pd df = pd.DataFrame(data=[['2022-01-01', '2021-01-03', 'a'], ['2020-05-01', '2021-03-03', 'b'], ['2023-06-02', '2019-04-03', 'c']], columns=['open_dt', 'd2', 'x']) df['open_dt'] = df['open_dt'].astype('datetime64[ns]') df['quater_open_dt'] = df['open_dt'].dt.to_period('QS')
I am gettinng the following error when I run this
---> 7 df['quater_open_dt'] = df['open_dt'].dt.to_period('QS') 8 df['establish_date'] = df['establish_date'].astype('datetime64[ns]') 9 df_tin = grp_on_tin(df) /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/accessor.py in f(self, *args, **kwargs) 90 def _create_delegator_method(name): 91 def f(self, *args, **kwargs): ---> 92 return self._delegate_method(name, *args, **kwargs) 93 94 f.__name__ = name /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/indexes/accessors.py in _delegate_method(self, name, *args, **kwargs) 107 108 method = getattr(values, name) --> 109 result = method(*args, **kwargs) 110 111 if not is_list_like(result): /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/indexes/extension.py in method(self, *args, **kwargs) 81 82 def method(self, *args, **kwargs): ---> 83 result = attr(self._data, *args, **kwargs) 84 if wrap: 85 if isinstance(result, type(self._data)): /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in to_period(self, freq) 1121 freq = res 1122 -> 1123 return PeriodArray._from_datetime64(self._data, freq, tz=self.tz) 1124 1125 def to_perioddelta(self, freq): /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/arrays/period.py in _from_datetime64(cls, data, freq, tz) 236 PeriodArray[freq] 237 """ --> 238 data, freq = dt64arr_to_periodarr(data, freq, tz) 239 return cls(data, freq=freq) 240 /opt/miniconda3/envs/PY37/lib/python3.7/site-packages/pandas/core/arrays/period.py in dt64arr_to_periodarr(data, freq, tz) 975 data = data._values 976 --> 977 base = freq._period_dtype_code 978 return c_dt64arr_to_periodarr(data.view("i8"), base, tz), freq 979 AttributeError: 'pandas._libs.tslibs.offsets.QuarterBegin' object has no attribute '_period_dtype_code'
Can someone please help me understand what’s happening here? ps: The data given here is dummy data and not the original data
Advertisement
Answer
Your syntax is incorrect, try like this instead:
df["quater_open_dt"] = df["open_dt"].dt.to_period("Q").dt.start_time
print(df) # Output open_dt d2 x quater_open_dt 0 2022-01-01 2021-01-03 a 2022-01-01 1 2020-05-01 2021-03-03 b 2020-04-01 2 2023-06-02 2019-04-03 c 2023-04-01