3 votes

Fusionner les cadres de données et les panneaux pour permettre l'exportation vers *Une* feuille Excel, et non vers plusieurs.

En exécutant le code suivant :

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)

Je reçois l'erreur suivante :

TypeError: cannot concatenate object of type "<class 'list'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

Cependant, lorsque je cesse de concaténer et que j'imprime simplement le cadre de données, le résultat est le suivant :

<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

Je rate manifestement quelque chose, mais il semble que le code ne veuille pas s'exécuter correctement parce qu'il ne veut pas concaténer une liste... mais la sortie de la ligne précédente ne le classe pas comme une liste, mais comme un panneau, qui peut être concaténé. Hmmm

Mon objectif final est de pouvoir écrire l'ensemble de la trame de données dans UNE feuille Excel, idéalement avec l'ouverture, la fermeture, le haut, le bas, le volume d'un titre avant de passer à l'ouverture, la fermeture, etc. d'un autre titre ; c'est toutefois un objectif secondaire. En l'état actuel des choses, si je devais écrire cela dans une feuille Excel, les "cours d'ouverture" de chaque action seraient inscrits sur un onglet, les "cours de clôture" sur un autre, et ainsi de suite, me laissant avec plus de 5 onglets. Toute aide serait la bienvenue. Merci d'avance.

1voto

Sylvain Biehler Points 1017

sheet.col_values renvoie une tranche tandis que web.DataReader returns un cadre de données et les erreurs indiquent concat s'attend à un cadre de données.

Vous voulez probablement remplacer resultingdf = pd.concat([data], axis=1) por resultingdf = pd.concat([df], axis=1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X