根据条件填写列

时间:2017-03-24 10:58:56

标签: python pandas datetime numpy

我有2个数据框,df1:

ID       Created Date          Days_Diff
L-22       2016-03-24            220
L-25       2016-02-12            200 

DF2:

ID       Closed Date
L-22      2017-01-03
L-25      

目标是重新计算Days_Diff,因为它没有确切的值。 所以我现在做了以下事情:

      df1['Days_Diff2'] = [int(i.days) for i in (df2['Closed date'] - df1['Created Date'])

问题如下:有些ID没有关闭日期,因此无法进行计算(我想我会有NaT)。如果可以计算Days_Diff2,我想有Days_Diff = Days_Diff2,如果没有,那么Days_Diff保持不变。

有可能吗?任何技巧或扭曲都可以吗?我需要一个职业选手:D

谢谢

编辑:检查上面的示例,我想:df1:

    ID       Created Date         Days_Diff          Days_Diff2
    L-22      2016-03-24            220         (2017-01-03 - 2016-03-24)
    L-25      2016-02-12            200                  200

1 个答案:

答案 0 :(得分:0)

有一种可能的方法,虽然没有更多的代码,但很难看到。您可以使用try和except来实现,但是您需要将代码分开,以便依次执行每个ID,即

try:
  #The code that you normally want to run
except:
  #The code that you want to run if it fails - i.e. if you have a NaT, it will then do a different calculation

如果没有更多代码,这就像我说的那样......