如何获得Python中同一列或不同列的日期列和最大日期之间的日差?

时间:2019-09-01 14:17:07

标签: python pandas datetime64

我正在设置新列作为Python中的日差(在Jupyter笔记本上)。

我进行了列日期和当前日期之间的日期差。此外,我还执行了日期列和通过当前日期新创建的日期之间的日期差(使用timedelta函数的“当前日期-/ +输入日期”)。

但是,每当我使用同一列和不同列的max()时,日差列都具有NaN值。这对我来说没有意义,也许我错过了日期类型。当我检查所有类型时,它们似乎都是datetime64(我已经将其转换为datetime64)。

我认为原因是日期不够长。但是,它发生在任何特定日期,例如max(datecolumn)+ timedelta(days = i)。

  
    

t = data_signups [[“” date_joined“]]。max()

  

date_joined 2019-07-18 07:47:24.963450 dtype:datetime64 [ns]

  
    

t = t + timedelta(30)

  

date_joined 2019-08-17 07:47:24.963450 dtype:datetime64 [ns]

  
    

data_signups ['joined_to_today'] =(t-data_signups ['date_joined'])。dt.days

         

data_signups.head(2)

  

缩短...

  • date_joined _______________ // Join_to_today _________
  • 2019-05-31 10:52:06.327341 //楠
  • 2019-04-02 09:20:26.520272 //楠

但是它可以像下面这样处理“当日任务”。

  
    

Currentdate = datetime.datetime.now()     打印(当前日期)     2019-09-01 17:05:48.934362

         

before_days = int(input(“输入今天进行分析的天数”))

         

30

  

完成

  
    

last_day_for_analysis =当前日期-timedelta(days = before_days)

         

打印(last_day_for_analysis)

  

2019-08-02 17:05:48.934362

  
    

data_signups ['joined_to_today'] =(last_day_for_analysis-data_signups ['date_joined'])。dt.days

         

data_signups.head(2)

  

缩短...

  • date_joined _______________ // Join_to_today _________
  • 2019-05-31 10:52:06.327341 // 63
  • 2019-04-02 09:20:26.520272 // 122

我希望有日期类型问题。但是,我都不知道,因为它们都是datetime64。列中没有NaN值。

感谢您的帮助。我是新手,我每天都在努力学习。

1 个答案:

答案 0 :(得分:0)

尽管我忙于这个问题2天,但现在我意识到自己犯了一个大错误。不好意思

不能将最大值作为日期的原因如下。

现有的一个:t = data_signups [[“” date_joined“]]。max()

必须为一:t = data_signups [“ date_joined”]。max()

因此它可以按以下方式使用。

data_signups ['joined_to_today'] =(data_signups ['date_joined']。max()-data_signups ['date_joined'])。dt.days data_signups.head(3)

将没有两个括号。如此愚蠢的错误。谢谢。