3

假设我有一个数据框,其中有两列包含日期,并且我想创建一个新列,其值是这些日期之间的月数。

>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"])

Date1 总是在 date2 之前。我目前的方法需要大约 10 个步骤,我很确定有更简单的方法可以做到这一点。想法?

4

2 回答 2

8

看到这个链接: http: //pandas.pydata.org/pandas-docs/dev/timeseries.html#time-deltas

(df['Date2']-df['Date1']).apply(lambda x: x/np.timedelta64(1,'M'))

对于 numpy >=1.7(如果您使用的是 1.6.1,请参阅链接)

我不确定它会对分数做什么。(通常我会除以np.timedelta64(1,'D')然后除以 30 来得到小数月数(作为浮点数)

于 2013-07-01T21:50:06.857 回答
-1

我不知道如何在 python 中做到这一点,但我会做的步骤:

  • 将日期转换为纪元以来的天数
  • 从 date2 中减去 date1
  • 除以 7
于 2013-07-01T21:43:04.033 回答