Pandas无法将输入转换为时间戳错误

时间:2016-12-27 10:17:00

标签: python pandas

我在数据集开始日期(格式datetime64 [ns])和结束日期(格式datetime64 [ns])中有两个变量。我正在使用以下代码来获取开始日期和结束日期之间的日期。

pd.date_range(start = data['beginning_date'], end = data['end_date'], freq = 'D')

但它正在抛出以下错误。

cannot convert input to timestamp

为什么我遇到上述错误。我尝试改变如下,但它不起作用。

pd.date_range(start = data['beginning_date'], end = data['end_date'], freq = 'D').astype('datetime')

并且我希望每一天都作为单独的记录,例如:beginning_date = 01APR2015和end_date = 30APR2015,我希望每一天都作为单独的记录,如下所示。

 01APR2015
 02APR2015 etc

如何将其作为单独的记录获取?

先谢谢。

3 个答案:

答案 0 :(得分:5)

假设你有以下DF:

inst/doc

我猜您在调用In [30]: df Out[30]: beginning_date end_date 0 2013-12-22 2014-01-01 1 2009-12-14 2009-12-28 2 2010-12-31 2011-01-11 方法时尝试使用系列而不是标量值:

pd.date_range()

所以试试这个:

In [31]: pd.date_range(df.beginning_date, df.end_date)
...
skipped
...
TypeError: Cannot convert input to Timestamp

答案 1 :(得分:0)

首先请帮助格式化输入,然后转换将起作用。

pd.date_range(start = '30-APR-2015', end = '05-MAY-2015', freq = 'D')

输出将是

DatetimeIndex(['2015-04-30', '2015-05-01', '2015-05-02', '2015-05-03',
           '2015-05-04', '2015-05-05'],
          dtype='datetime64[ns]', freq='D')

答案 2 :(得分:-2)

Есликтопридетсюдасэтойпроблемойиз2к20,торешение-применениеlambda

如果有人从2k20开始遇到此问题,解决方案是使用lambda ...

f = lambda x:len(pd.date_range(start = x [0],end = x [1],freq ='M'))

df_clear ['difference'] = df_clear [['start_month','finish_month']]。apply(f,axis = 1)