date_range 使用日期时间子选择时出错
Error with date_range using datetime subselection
我需要使用 pd.date_range 创建一个日期向量,指定日期值的最小值和最大值。
日期值来自对数据框对象 ds
.
执行的子选择
这是我写的代码:
注意ds
中的Date
是从
获得的
ds = pd.read_excel("data.xlsx",sheet_name='all') # Read the Excel file
ds['Date'] = pd.to_datetime(ds['Date'], infer_datetime_format=True)
这是 for 循环中的部分,其中 x
在名称列表上循环。
for x in lofNames:
date_tmp = ds.loc[ds['Security Name']==x,['Date']]
mindate = date_tmp.min()
maxdate = date_tmp.max()
date = pd.date_range(start=mindate, end=maxdate, freq='D')
这是我得到的错误:
Traceback (most recent call last):
File "<ipython-input-8-1f56d07b5a74>", line 4, in <module>
date = pd.date_range(start=mindate, end=maxdate, freq='D')
File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/datetimes.py", line 1180, in date_range
**kwargs,
File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py", line 365, in _generate_range
start = Timestamp(start)
File "pandas/_libs/tslibs/timestamps.pyx", line 418, in pandas._libs.tslibs.timestamps.Timestamp.__new__
File "pandas/_libs/tslibs/conversion.pyx", line 329, in pandas._libs.tslibs.conversion.convert_to_tsobject
TypeError: Cannot convert input [Date 2007-01-09
dtype: datetime64[ns]] of type <class 'pandas.core.series.Series'> to Timestamp
怎么了?
谢谢
此处返回一列 DataFrame
而不是 Series
,因此下一个 min
和 max
返回一项 Series
而不是 scalar
,所以出现错误:
date_tmp = ds.loc[ds['Security Name']==x,['Date']]
正确的方法已删除[]
:
date_tmp = ds.loc[ds['Security Name']==x,'Date']
我需要使用 pd.date_range 创建一个日期向量,指定日期值的最小值和最大值。
日期值来自对数据框对象 ds
.
这是我写的代码:
注意ds
中的Date
是从
ds = pd.read_excel("data.xlsx",sheet_name='all') # Read the Excel file
ds['Date'] = pd.to_datetime(ds['Date'], infer_datetime_format=True)
这是 for 循环中的部分,其中 x
在名称列表上循环。
for x in lofNames:
date_tmp = ds.loc[ds['Security Name']==x,['Date']]
mindate = date_tmp.min()
maxdate = date_tmp.max()
date = pd.date_range(start=mindate, end=maxdate, freq='D')
这是我得到的错误:
Traceback (most recent call last):
File "<ipython-input-8-1f56d07b5a74>", line 4, in <module>
date = pd.date_range(start=mindate, end=maxdate, freq='D')
File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/datetimes.py", line 1180, in date_range
**kwargs,
File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py", line 365, in _generate_range
start = Timestamp(start)
File "pandas/_libs/tslibs/timestamps.pyx", line 418, in pandas._libs.tslibs.timestamps.Timestamp.__new__
File "pandas/_libs/tslibs/conversion.pyx", line 329, in pandas._libs.tslibs.conversion.convert_to_tsobject
TypeError: Cannot convert input [Date 2007-01-09
dtype: datetime64[ns]] of type <class 'pandas.core.series.Series'> to Timestamp
怎么了? 谢谢
此处返回一列 DataFrame
而不是 Series
,因此下一个 min
和 max
返回一项 Series
而不是 scalar
,所以出现错误:
date_tmp = ds.loc[ds['Security Name']==x,['Date']]
正确的方法已删除[]
:
date_tmp = ds.loc[ds['Security Name']==x,'Date']