私は以下のような日時列を持っています-
>>> df['ACC_DATE'].head(2)
538 2006-04-07
550 2006-04-12
Name: ACC_DATE, dtype: datetime64[ns]
ここで、この列の各行から1年を減算します。どうすれば同じことを実現できますか?また、どのライブラリを使用できますか?
期待されるフィールド-
ACC_DATE NEW_DATE
538 2006-04-07 2005-04-07
549 2006-04-12 2005-04-12
ありがとう。
DateOffset
を使用してこれを実現できます。
In [15]:
df['NEW_DATE'] = df['ACC_DATE'].apply(lambda x: x - pd.DateOffset(years=1))
df
Out[15]:
ACC_DATE NEW_DATE
index
538 2006-04-07 2005-04-07
550 2006-04-12 2005-04-12
update
3年後にこの質問を見て、apply
を使用する必要はありません。
In[88]:
df['NEW_DATE'] = df['ACC_DATE'] - pd.DateOffset(years=1)
df
Out[88]:
ACC_DATE NEW_DATE
index
538 2006-04-07 2005-04-07
550 2006-04-12 2005-04-12
これはベクトル化された操作です
Pd.Timedeltaを使用できます。
df["NEW_DATE"] = df["ACC_DATE"] - pd.Timedelta(days=365)
または交換:
df["NEW_DATE"] = df["ACC_DATE"].apply(lambda x: x.replace(year=x.year - 1))
ただし、どちらもうるう年をキャッチしないため、dateutil.relativedelta
:
from dateutil.relativedelta import relativedelta
df["NEW_DATE"] = df["ACC_DATE"].apply(lambda x: x - relativedelta(years=1))
DateOffset を使用します:
df["NEW_DATE"] = df["ACC_DATE"] - pd.offsets.DateOffset(years=1)
print (df)
ACC_DATE NEW_DATE
index
538 2006-04-07 2005-04-07
550 2006-04-12 2005-04-12