【问题标题】:DataFrame attribute error when writing multiple csv files写入多个 csv 文件时出现 DataFrame 属性错误
【发布时间】:2020-01-30 07:25:07
【问题描述】:

我正在尝试从 cryptocompare api 中提取超过 1,000 枚硬币的每日 OHLCV 数据,并将这些数据写入 csv 文件;我已经成功编写了 daily_OHLCV 函数,如果我在单个硬币上调用该函数,它会表现良好,说 daily_OHLCV('BTC','USD')。

但是,当我从 csv 文件导入 1000 个硬币的股票代码列表并尝试使用 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')

如果有人可以帮助解决此问题以成功调用该函数并为 ico_ticker_list 中的所有代码生成相应的 csv 文件,我们将不胜感激

【问题讨论】:

    标签: python-3.x pandas api dataframe


    【解决方案1】:

    在这一行中,您正在尝试读取 dataframe

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

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

    【讨论】:

    • 我尝试通过手动输入代码来调用该函数,并且生成的 csv 文件中有一个“时间”列,但是当我尝试使用 for 循环调用该函数时,它失败了。
    • 你比较过手动输入代码和使用循环时的api响应吗?
    猜你喜欢
    • 2020-08-03
    • 2018-11-30
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多