#python #pandas #dataframe #csv #yahoo-finance
#python #pandas #фрейм данных #csv #yahoo-финансы
Вопрос:
Итак, я собираю данные из S amp; P 500 из файла csv. Мой вопрос в том, как мне создать один большой фрейм данных, содержащий 500 столбцов и содержащий все цены. Код в настоящее время:
import pandas as pd
import pandas_datareader as web
import datetime as dt
from datetime import date
import numpy as np
def get_data():
start = dt.datetime(2020, 5, 30)
end = dt.datetime.now()
csv_file = pd.read_csv(os.path.expanduser("/Users/benitocano/Downloads/copyOfSandP500.csv"), delimiter = ',')
tickers = pd.read_csv("/Users/benitocano/Downloads/copyOfSandP500.csv", delimiter=',', names = ['Symbol', 'Name', 'Sector'])
for i in tickers['Symbol'][:5]:
df = web.DataReader(i, 'yahoo', start, end)
df.drop(['High', 'Low', 'Open', 'Close', 'Volume'], axis=1, inplace=True)
get_data()
Итак, как показывает код прямо сейчас, он просто собирается создать 500 отдельных фреймов данных, и поэтому я спрашиваю, как превратить его в один большой фрейм данных. Спасибо!
Редактировать:
Ссылка на файл CSV:
https://datahub.io/core/s-and-p-500-companies
Я попробовал это в приведенном выше коде:
for stock in data:
series = pd.Series(stock['Adj Close'])
df = pd.DataFrame()
df[ticker] = series
print(df)
Хотя на выходе получается только один столбец, например:
ADM
Date
2020-06-01 38.574604
2020-06-02 39.348278
2020-06-03 40.181465
2020-06-04 40.806358
2020-06-05 42.175167
... ...
2020-11-05 47.910000
2020-11-06 48.270000
2020-11-09 49.290001
2020-11-10 50.150002
2020-11-11 50.090000
Почему печатается только один столбец, а не остальные, если они?
Ответ №1:
Ответ зависит от структуры фреймов данных, которые создает ваш текущий код. Поскольку код зависит от некоторых файлов на вашем локальном диске, мы не можем запускать его так сложно, чтобы быть конкретными здесь. В общем, есть много вариантов, среди наиболее распространенных, я бы сказал, являются
Комментарии:
1. я внес некоторые изменения выше, и я добавил ссылку на CSV. Я пытался использовать concat, даже с axis= 1, хотя я все еще сталкиваюсь с проблемой, что фрейм данных не будет отображаться как один с отдельными столбцами.