Чтение нескольких файлов CSV в один DataFrame - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь прочитать несколько файлов цен акций CSV, каждый из которых имеет следующие столбцы: дата, время, открытие, максимум, минимум, закрытие. Код:

import pandas as pd
tickers=['gmk','yandex','sberbank']
ohlc_intraday={}
ohlc_intraday['gmk']=pd.read_csv("gmk_15min.csv",parse_dates=["<DATE>"],dayfirst=True)
ohlc_intraday['yandex']=pd.read_csv("yndx_15min.csv",parse_dates=["<DATE>"],dayfirst=True)
ohlc_intraday['sberbank']=pd.read_csv("sber_15min.csv",parse_dates=["<DATE>"],dayfirst=True)

df=copy.deepcopy(ohlc_intraday)

for i in range(len(tickers)):
    df[tickers[i]] = df[tickers[i]].iloc[:, 2:]
    df[tickers[i]].columns = ['Date','Time',"Open", "High", "Low", "Adj Close", "Volume"]
    df[tickers[i]]['Time']=[x+':00' for x in df['Time']] 

Однако я столкнулся с ошибкой KeyError: «Time». Похоже, столбцы не являются ключами. Можно ли прочитать или преобразовать его в формат DataFrame с ключами, тикерами акций (gmk, yandex, sberbank) и именами столбцов, чтобы я мог легко извлечь значение, используя следующий код

ohlc_intraday['sberbank']['Date'][1]

1 Ответ

0 голосов
/ 05 марта 2020

Что вы можете сделать, это создать DataFrame со столбцом, который определяет рынок.

import pandas as pd

markets = ["gmk", "yandex", "sberbank"]
markets = ["gmk_15min.csv", "yndx_15min.csv", "sberbank.csv"]

dfs = [pd.read_csv(market, parse_dates=["<DATE>"], dayfirst=True)
       for market in markets]

# add market column to each df
for df in dfs:
    df['market'] = market

# concatenate in one dataframe
df = pd.concat(dfs)

Затем получите доступ к тому, что вы хотите, таким образом

df[df['market'] == 'yandex']['Date'].iloc[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...