从pandas python中的列中的日期中减去索引日期

时间:2014-05-01 12:40:56

标签: python pandas

我有一个看起来像这样的DataFrame - 即我有一个日期索引,我有一列日期。我只想从列中的日期中减去索引日期,并将该差异放在另一列中。但是,我似乎可以找到如何在计算中使用索引。

              Code   FinishDate
1990-01-01    XYZ    1999-02-14
1990-01-02    ABC    1997-01-27

2 个答案:

答案 0 :(得分:0)

这有效,但会发出警告:

In [168]:

df['DateDiff'] = df.FinishDate-df.index
df
C:\WinPython-64bit-3.3.3.2\python-3.3.3.amd64\lib\site-packages\pandas\core\format.py:1851: DeprecationWarning: Implicitly casting between incompatible kinds. In a future numpy release, this will raise an error. Use casting="unsafe" if this is intentional.
  elif format_short and x == 0:
C:\WinPython-64bit-3.3.3.2\python-3.3.3.amd64\lib\site-packages\pandas\core\format.py:1851: DeprecationWarning: Implicitly casting between incompatible kinds. In a future numpy release, this will raise an error. Use casting="unsafe" if this is intentional.
  elif format_short and x == 0:
Out[168]:
           Code FinishDate  DateDiff
1990-01-01  XYZ 1999-02-14 3331 days
1990-01-02  ABC 1997-01-27 2582 days

[2 rows x 3 columns]

您必须确保您的索引和FinishDate都是日期时间而不是字符串,要进行转换只需使用pd.to_datetime()

修改

要将字符串转换为日期时间,请执行以下操作:

df.index = pd.to_datetime(df.index)
df.FinishDate = pd.to_datetime(df.FinishDate)

我不知道两者是否都需要,但这是有效的

答案 1 :(得分:-2)

如果您添加日期类型的字段,例如http://prntscr.com/3f4seo

然后根据我的示例查询

更新products设置dif_days = DATEDIFF(date1date2)。

希望这会对你有所帮助

感谢