运行以下代码时:
import datetime as dt
from datetime import datetime
import pandas as pd
import pandas_datareader.data as web
from pandas import ExcelWriter
import xlrd
import xlwt
start = dt.datetime.strptime("8/11/2017", "%m/%d/%Y")
end = dt.datetime.today()
book = xlrd.open_workbook('Example.xlsx')
sheet = book.sheet_by_name('Okay')
data = sheet.col_values(0, 1)
##print(data)
df = web.DataReader(data, 'yahoo', start, end)
print(df)
resultingdf = pd.concat([data], axis=1)
我收到以下错误:
TypeError: cannot concatenate object of type "<class 'list'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
但是,当我停止连接并打印数据帧时,它显示为:
<class 'pandas.core.panel.Panel'>
Dimensions: 6 (items) x 79 (major_axis) x 4 (minor_axis)
Items axis: Adj Close to Volume
Major_axis axis: 2017-12-01 00:00:00 to 2017-08-11 00:00:00
Minor_axis axis: AAPL to UCTT
我显然错过了一些东西,但看起来代码不想正常运行,因为它不想连接列表...但是输出行先前将其分类为列表,但是面板,可以连接。嗯
我的最终目标是能够允许将整个数据帧写入ONE excel表,理想情况是在打开,关闭等之前列出一个库存的开盘价,收盘价,高价,低价。另一个;然而,这更像是次要目标。按照目前的情况,如果我把它写成excel表,它会在一个标签上为每个股票写“开盘价”,在另一个标签上写'收盘价',依此类推等等,给我留下5个以上的标签。任何帮助都会很棒。提前谢谢。
答案 0 :(得分:1)
sheet.col_values
会在web.DataReader returns
数据帧时返回一个切片,错误告诉concat
需要一个数据帧。
您可能希望将resultingdf = pd.concat([data], axis=1)
替换为resultingdf = pd.concat([df], axis=1)