我在数据集开始日期(格式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
如何将其作为单独的记录获取?
先谢谢。
答案 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)