合并数据框/面板以允许导出到* ONE * excel表,而不是多个

时间:2017-12-02 20:40:11

标签: python pandas dataframe merge

运行以下代码时:

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个以上的标签。任何帮助都会很棒。提前谢谢。

1 个答案:

答案 0 :(得分:1)

sheet.col_values会在web.DataReader returns数据帧时返回一个切片,错误告诉concat需要一个数据帧。

您可能希望将resultingdf = pd.concat([data], axis=1)替换为resultingdf = pd.concat([df], axis=1)