python 将 relativedelta 应用于日期列
python apply relativedelta to a column of dates
下面是我的df
import pandas as pd
df = pd.DataFrame({'Date' : ['2014-03-27', '2014-03-28', '2014-03-31', '2014-04-01', '2014-04-02', '2014-04-03', '2014-04-04', '2014-04-07','2014-04-08', '2014-04-09'],
})
我可以用比该行日期早两个月的另一个日期创建一个列。
df['Date1'] = df.Date.apply(lambda x: pd.to_datetime(x) + relativedelta(months=-2))
有没有更快的方法来执行相同的任务(例如矢量化)?我原来的 df 真的很大 30-40k 行。
您可以使用 pandas 日期时间函数向量化
df['Date1'] = pd.to_datetime(df.Date) - pd.DateOffset(months=2)
df
输出:
Date Date1
0 2014-03-27 2014-01-27
1 2014-03-28 2014-01-28
2 2014-03-31 2014-01-31
3 2014-04-01 2014-02-01
4 2014-04-02 2014-02-02
5 2014-04-03 2014-02-03
6 2014-04-04 2014-02-04
7 2014-04-07 2014-02-07
8 2014-04-08 2014-02-08
9 2014-04-09 2014-02-09
下面是我的df
import pandas as pd
df = pd.DataFrame({'Date' : ['2014-03-27', '2014-03-28', '2014-03-31', '2014-04-01', '2014-04-02', '2014-04-03', '2014-04-04', '2014-04-07','2014-04-08', '2014-04-09'],
})
我可以用比该行日期早两个月的另一个日期创建一个列。
df['Date1'] = df.Date.apply(lambda x: pd.to_datetime(x) + relativedelta(months=-2))
有没有更快的方法来执行相同的任务(例如矢量化)?我原来的 df 真的很大 30-40k 行。
您可以使用 pandas 日期时间函数向量化
df['Date1'] = pd.to_datetime(df.Date) - pd.DateOffset(months=2)
df
输出:
Date Date1
0 2014-03-27 2014-01-27
1 2014-03-28 2014-01-28
2 2014-03-31 2014-01-31
3 2014-04-01 2014-02-01
4 2014-04-02 2014-02-02
5 2014-04-03 2014-02-03
6 2014-04-04 2014-02-04
7 2014-04-07 2014-02-07
8 2014-04-08 2014-02-08
9 2014-04-09 2014-02-09