【问题标题】:Pandas Datetime: Calculate Number of Weeks Between Dates in Two ColumnsPandas Datetime:计算两列中日期之间的周数
【发布时间】:2013-07-02 05:50:06
【问题描述】:

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

>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 个步骤,而且我很确定有一种更简单的方法可以执行此操作。想法?

【问题讨论】:

  • 在你的标题中你放了几个星期,而文本有几个月?

标签: python datetime pandas


【解决方案1】:

查看此链接: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 以得出月份的小数(作为浮点数)

【讨论】:

  • fyi....您的问题标题说的是周,但在文本中您说的是月(如果周则只使用“W”而不是“M”),或者使用天并除以7
【解决方案2】:

我不确定如何在 python 中执行此操作,但我会执行以下步骤:

  • 将日期转换为纪元以来的天数
  • 从 date2 中减去 date1
  • 除以 7

【讨论】:

  • 这可能根本不是他在 python 中应该做的......但它会起作用
  • “她”...并非所有人都是男性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2011-04-17
  • 2021-10-16
相关资源
最近更新 更多