首页 > 解决方案 > azure ml 中两个日期之间的差异

问题描述

我试图在天数方面找到两个日期之间的差异。我正在尝试以下代码

d1=pd.to_datetime(dataframe1['Order Date'])
d=str(d1)
dates=datetime.strptime(d,'%m-%d-%Y')
d2=pd.to_datetime(dataframe1['Dispatch Date'])
dd=str(d2)
dates1=datetime.strptime(dd,'%m-%d-%Y')
dataframe1['Months_difference']=dates1-dates

但它正在显示这样的错误:

ValueError: 时间数据 '0 2017-02-13\n1 2017-02-24\n2 2017-03-02\n3 2017-03-06\n4 2017-03-06\n5 2017-03-06\n6 2017- 03-11\n7 2017-03-23\n8 2017-03-23\n9 2017-03-24\n10 2017-04-07\n11 2017-04-07\n12 2017-04-07\n13 2017-04 -07\n14 2017-04-07\n...\n855 2018-02-02\n856 2018-02-02\n857 2018-02-02\n858 2018-02-02\n859 2018-02-02\ n860 2018-02-01\n861 2018-02-06\n862 2018-03-15\n863 2018-03-21\n864 2018-03-21\n865 2018-04-05\n866 2018-04-07\n867 2018-04-07\n868 2018-04-11\n869 2018-04-10\n名称:订单日期,长度:870,dtype:datetime64[ns]' 与格式 '%m-%d-%Y' 不匹配进程返回非零退出代码 1 如何解决此问题

标签: pythonpandasazure

解决方案


IIUC,您可以在pandas没有 datetime 模块的情况下从内部完成这一切。我假设您的起始数据框看起来像:

>>> dataframe1
  Dispatch Date  Order Date
0    2017-03-02  2017-02-13
1    2017-03-06  2017-02-24

在这种情况下,您可以这样做:

# set columns to datetime:
dataframe1['Order Date'] = pd.to_datetime(dataframe1['Order Date'])
dataframe1['Dispatch Date'] = pd.to_datetime(dataframe1['Dispatch Date'])
# Make a new column for the difference in days
dataframe1['day_diff'] =  dataframe1['Dispatch Date'] - dataframe1['Order Date']

哪个输出:

>>> df
  Dispatch Date Order Date day_diff
0    2017-03-02 2017-02-13  17 days
1    2017-03-06 2017-02-24  10 days

解释pandas:在一个对象中减去两个日期时间Timedelta对象(如在新列中day_diff)。如果您希望它作为天数的整数表示,只需添加dt.days到最后一个命令:

dataframe1['day_diff'] =  (dataframe1['Dispatch Date'] - dataframe1['Order Date']).dt.days

推荐阅读