2013-07-01 100 views
2

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

>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个步骤,而且我很确定有一个更简单的方法可以做到这一点。思考?

+0

在您的标题中放了几周,而文字有几个月? – Jeff

回答

5

看到此链接: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表示分数的月份(作为浮点数)

+0

fyi ....你的问题的标题说几个星期,但在你说的几个月的文本(如果几个星期,然后只是使用'W'而不是'M'),或使用天数除以7 – Jeff

-1

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

  • 7从date2的
  • 分水岭转换日期,天数,因为时代
  • 减去DATE1
+0

这可能根本不是他应该做的在Python中做...但它会工作 –

+3

“她”...不是我们所有人都是男性 –