假设我有一个数据帧,其中有两列包含日期,我想创建一个新列,其值是这些日期之间的月数。
>df
Index Date1 Date2
1 2012/03/07 2013/03/16
2 2012/12/05 2012/12/25
3 2010/06/30 2013/05/19
4 2002/11/02 2011.06.08
df["Date1"]= pd.to_datetime(df["Date1"])
df["Date2"]= pd.to_datetime(df["Date2"])
日期1将始终在日期2之前。我目前的方法需要大约10个步骤,我确信有一种更简单的方法可以做到这一点。想法?
请参阅此链接:http://pandas.pydata.org/pandas-docs/dev/timeseries.html#time-Δ
(df['Date2']-df['Date1']).apply(lambda x: x/np.timedelta64(1,'M'))
对于numpy>=1.7(如果您使用的是1.6.1,请参阅链接)
我不确定它对这个分数有什么作用。(通常我会除以np.timedelta64(1,'D')
,然后除以30,得到月数的分数(作为浮动)
我不知道如何在python中做到这一点,但我会做的步骤是:
- 将日期转换为自epoch以来的天数
- 从日期2减去日期1
- 除以7