pandas :减去两个日期列,结果是一个整数

2022-01-14 00:00:00 python numpy pandas datetime int

问题描述

我在 Pandas 数据框中有两列是日期.

I have two columns in a Pandas data frame that are dates.

我希望从另一列中减去一列,结果是天数的差异作为整数.

I am looking to subtract one column from another and the result being the difference in numbers of days as an integer.

查看数据:

df_test.head(10)
Out[20]: 
  First_Date Second Date
0 2016-02-09  2015-11-19
1 2016-01-06  2015-11-30
2        NaT  2015-12-04
3 2016-01-06  2015-12-08
4        NaT  2015-12-09
5 2016-01-07  2015-12-11
6        NaT  2015-12-12
7        NaT  2015-12-14
8 2016-01-06  2015-12-14
9        NaT  2015-12-15

我已经成功创建了一个新列,不同之处:

I have created a new column successfully with the difference:

df_test['Difference'] = df_test['First_Date'].sub(df_test['Second Date'], axis=0)
df_test.head()         
Out[22]: 
  First_Date Second Date  Difference
0 2016-02-09  2015-11-19     82 days
1 2016-01-06  2015-11-30     37 days
2        NaT  2015-12-04         NaT
3 2016-01-06  2015-12-08     29 days
4        NaT  2015-12-09         NaT

但是我无法获得结果的数字版本:

However I am unable to get a numeric version of the result:

df_test['Difference'] = df_test[['Difference']].apply(pd.to_numeric)     

df_test.head()
Out[25]: 
  First_Date Second Date    Difference
0 2016-02-09  2015-11-19  7.084800e+15
1 2016-01-06  2015-11-30  3.196800e+15
2        NaT  2015-12-04           NaN
3 2016-01-06  2015-12-08  2.505600e+15
4        NaT  2015-12-09           NaN


解决方案

怎么样:

df_test['Difference'] = (df_test['First_Date'] - df_test['Second Date']).dt.days

如果没有缺失值(NaT),这将返回差异为 int,如果有,则返回 float.

This will return difference as int if there are no missing values(NaT) and float if there is.

Pandas 有关于 时间序列/日期功能 和 时间增量

Pandas have a rich documentation on Time series / date functionality and Time deltas

相关文章