Ошибка атрибута DataFrame при записи нескольких CSV-файлов - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь извлечь ежедневные данные OHLCV для более чем 1000 монет из API-интерфейса cryptocompare и записать эти данные в CSV-файлы; мне удалось написать функцию daily_OHLCV, и она работает хорошо, если я вызываю функцию для отдельной монеты,скажем daily_OHLCV ('BTC', 'USD').

Однако, поскольку я импортировал список тикеров из 1000 монет из файла csv и попытался использовать цикл for для вызова функции daily_OHLCV для каждого тикера в списке, код не работает ив сообщении об ошибке говорится, что объект «DataFrame» не имеет атрибута «время», который никогда не появляется, если я вручную ввожу тикер в идентификатор. Как я могу исправить эту ошибку атрибута?

import requests
import datetime
import pandas as pd
import json
import csv
import os
import os.path

with open ('ICO-list.csv',"r")as f:
    reader=csv.reader(f)
    ico_ticker_list=[]
    for row in reader:
        ticker=row[2]
        ico_ticker_list.append(ticker)

def daily_OHLCV(symbol, comparison_symbol, allData='true'):
    url = 'https://min-api.cryptocompare.com/data/histoday?fsym={}&tsym={}&allData=true'\
        .format(symbol.upper(), comparison_symbol.upper())
    page = requests.get(url)
    data = page.json()['Data']
    df = pd.DataFrame(data)
    df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]
    path=os.path.expanduser('~')
    csvfile=os.path.join(path,'Desktop','Research','daily OHLCV','{}.csv'.format(symbol))
    export_csv=df.to_csv(csvfile,na_rep='NA',index=None,header=True)


for item in ico_ticker_list:
    daily_OHLCV(item,'USD')

Очень признателен, если кто-то можетпомогите решить эту проблему, чтобы успешно вызвать функцию и создать соответствующий CSV-файл для всех тикеров в ico_ticker_list

1 Ответ

0 голосов
/ 01 октября 2019

в этой строке вы пытаетесь прочитать time столбец в dataframe

df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]

У объекта 'DataFrame' нет атрибута 'time' ошибка означает, что ваш dataframeнет этой колонки. это может быть потому, что в вашем ответе API нет определенного поля данных, относящегося к time . проверьте ответ API перед созданием информационного кадра и получите имена столбцов из df.columns и убедитесь, что столбец времени существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...