Python 3.6.5返回'<';在';元组';和';str';错误消息

Python 3.6.5返回'<';在';元组';和';str';错误消息,python,pandas,time-series,tuples,pandas-datareader,Python,Pandas,Time Series,Tuples,Pandas Datareader,我正在尝试将一个数据集拆分为培训和测试部分。我正在努力解决一个结构性问题,因为继续执行下面的代码似乎是错误的数据层次结构 我尝试了以下方法: import pandas as pd data = pd.DataFrame(web.DataReader('SPY', data_source='morningstar')['Close']) cutoff = '2015-1-1' data = data[data.index < cutoff].dropna().copy() 将熊猫作为pd

我正在尝试将一个数据集拆分为培训和测试部分。我正在努力解决一个结构性问题,因为继续执行下面的代码似乎是错误的数据层次结构

我尝试了以下方法:

import pandas as pd
data = pd.DataFrame(web.DataReader('SPY', data_source='morningstar')['Close'])
cutoff = '2015-1-1'
data = data[data.index < cutoff].dropna().copy()
将熊猫作为pd导入
data=pd.DataFrame(web.DataReader('SPY',data_source='morningstar')['Close']))
截止日期='2015-1-1'
data=data[data.index正如
data.head()
将揭示的那样,
数据
实际上不是一个
pd.DataFrame
,而是一个
pd.Series
,它的索引是一个
pd.MultiIndex
(这也是一个提示每个元素都是元组的错误)而不是一个
pd.DatetimeIndex

你能做的就是简单地让

df = data.unstack(0)

有了它,
df[df.index
执行您试图执行的过滤。

最有可能的是
data.index
不是
pd.DatetimeIndex
,您需要对其进行预处理以将其变成有用的形式。那么在这种情况下,'web.DataReader()`返回什么呢?您似乎有一个复合索引?非常感谢!您是对的,我没有检查数据帧对象是否实际上是数据帧。我敢肯定它以前是可以用的