我有一个数据集(简称为df
),其中包含一个填充的ID column
和一个名为Start_of_Intervention
的日期列。
我正在计算6 month periods
前后5年内的Start_of_Intervention
。
The dates are formatted as 20/02/2015 etc.
我认为我需要使用datetime.date
,因为我对时间部分不感兴趣,但是在将数据集链接到任何日期函数时遇到了麻烦。
此代码似乎无法正常工作:
dt['START_OF_INTERVENTION2']=dt['START_OF_INTERVENTION'].astype(str)
dt['START_OF_INTERVENTION3'] = dt['START_OF_INTERVENTION2'].apply(
lambda x:
x+relativedelta(months=+6)
有人可以建议吗?
答案 0 :(得分:1)
避免将常规的Python类型与Pandas混合使用。有大量的熊猫datetime
功能可供使用,测试和记录。例如,将系列转换为pd.DateOffset
后,可以使用datetime
:
import pandas as pd
df = pd.DataFrame({'DATE0': ['30/01/2015', '20/02/2015', '10/03/2015']})
df['DATE0'] = pd.to_datetime(df['DATE0'], dayfirst=True)
# ALTERNATIVE 1
df = df.join(pd.concat((df['DATE0'].add(pd.DateOffset(months=6*i)).rename(f'DATE{i}') \
for i in range(1, 5)), axis=1))
# ALTERNATIVE 2
df = df.assign(**{f'DATE{i}': df['DATE0'].add(pd.DateOffset(months=6*i)) \
for i in range(1, 5)})
print(df)
DATE0 DATE1 DATE2 DATE3 DATE4
0 2015-01-30 2015-07-30 2016-01-30 2016-07-30 2017-01-30
1 2015-02-20 2015-08-20 2016-02-20 2016-08-20 2017-02-20
2 2015-03-10 2015-09-10 2016-03-10 2016-09-10 2017-03-10