写入多个csv文件时,DataFrame属性错误

时间:2019-10-01 02:31:26

标签: python-3.x pandas api dataframe

我正在尝试从cryptocompare api中提取超过1,000个硬币的每日OHLCV数据,并将这些数据写入csv文件;我设法编写了daily_OHLCV函数,如果我在单个硬币上调用该函数,它的性能也很好,例如daily_OHLCV('BTC','USD')。

但是,当我从一个csv文件中导入1000个硬币的行情清单并尝试使用for循环为列表中的每个行情清单调用daily_OHLCV函数时,代码不起作用并且出现错误消息说'DataFrame'对象没有属性'time',如果我手动将代码输入到标识符中就不会出现。如何解决此属性错误?

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')

如果有人可以帮助解决此问题以成功调用该函数并为ico_ticker_list中的所有代码生成相应的csv文件,则非常感谢

1 个答案:

答案 0 :(得分:0)

在此行中,您尝试读取数据框

中的时间
df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]

“ DataFrame”对象没有属性“ time”错误,这意味着您的数据框没有此列。 这可能是因为您的api响应没有与时间相关的特定数据字段。 在创建数据框之前检查api响应,并从df.columns获取列名,并确认time列存在。