当前位置: 首页 > 知识库问答 >
问题:

收到Python中的“ValueError:如果使用所有标量值,则必须传递索引”

慕容宏邈
2023-03-14

我在python上运行了以下代码,以便从一开始就检索各种加密货币收盘价。我已使用以下代码成功运行它:

tickers = ['USDT_BTC','USDT_BCH','USDT_ETC','USDT_XMR','USDT_ETH','USDT_DASH',
 'USDT_XRP','USDT_LTC','USDT_NXT','USDT_STR','USDT_REP','USDT_ZEC']

现在,我将其更改如下(包括完整代码),并得到一个ValueError。

[LN1]

 def CryptoDataCSV(symbol, frequency):

        #Params: String symbol, int frequency = 300,900,1800,7200,14400,86400

        #Returns: df from first available date

        url ='https://poloniex.com/public?command=returnChartData&currencyPair='+symbol+'&end=9999999999&period='+str(frequency)+'&start=0'

        df = pd.read_json(url)

        df.set_index('date',inplace=True)

        df.to_csv(symbol + '.csv')

        print('Processed: ' + symbol)

[LN2]

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

[LN3]

    tickers = 'ETH_BTC','STR_BTC','XMR_BTC','XRP_BTC','LTC_BTC','DASH_BTC',
'ETC_BTC','POT_BTC','OMG_BTC','FCT_BTC','ZEC_BTC','BTS_BTC','VTC_BTC',
'XEM_BTC','MAID_BTC','DGB_BTC','STRAT_BTC','LSK_BTC','XVC_BTC','SC_BTC',
'DOGE_BTC','XBC_BTC','GNT_BTC','EMC2_BTC','CLAM_BTC','RIC_BTC','SYS_BTC',
'DCR_BTC','STEEM_BTC','ZRX_BTC','GAME_BTC','VIA_BTC','NXC_BTC','NXT_BTC'
,'VRC_BTC','NAV_BTC','PINK_BTC','STORJ_BTC','ARDR_BTC','BCN_BTC','CVC_BTC',
'EXP_BTC','LBC_BTC','GNO_BTC','GAS_BTC','OMNI_BTC','XCP_BTC','NEOS_BTC',
'BURST_BTC','AMP_BTC','FLDC_BTC','FLO_BTC','SBD_BTC','BLK_BTC','BTCD_BTC',
'NOTE_BTC','GRC_BTC','PPC_BTC','BTM_BTC','XPM_BTC','NMC_BTC','PASC_BTC',
'NAUT_BTC','BELA_BTC','SJCX_BTC','HUC_BTC','RADS_BTC']

[LN4]

for ticker in tickers:
        CryptoDataCSV(ticker, 86400)

我现在得到以下错误:

--------------------------------------------------------------------------- ValueError Traceback(最近的调用最后)in()1 for ticker在股票上:----

在CryptoDataCSV(符号、频率)7中https://poloniex.com/public?command=returnChartData

~\Anaconda3\lib\site-包\熊猫\io\json\json.pyread_json(path_or_buf,东方,typ,dtype,convert_axes,convert_dates,keep_default_dates,Numpy,precise_float,date_unit,编码,行)352 obj=FrameParser(json,东方,dtype,convert_axes,convert_dates,353keep_default_dates,Numpy,precise_float,--

~\Anaconda3\lib\site-包\熊猫\io\json\json.py在解析(自我)420 421其他:--

~\Anaconda3\lib\site-包\熊猫\io\json\json.py在_parse_no_numpy(自我)637如果orient=="列": 638self.obj=DataFrame(--

init中的~\Anaconda3\lib\site packages\pandas\core\frame.py(self、data、index、columns、dtype、copy)273 dtype=dtype、copy=copy)274 elif isinstance(data、dict):--

~\Anaconda3\lib\site packages\pandas\core\frame.py in_init_dict(self、data、index、columns、dtype)409数组=[k键的数据[k]410--

~\Anaconda3\lib\site packages\pandas\core\frame.py in_arrays\u to_mgr(数组、arr\u名称、索引、列、数据类型)5494#计算索引,如有必要,5495如果索引为None:-

提取索引(数据)5533 5534中的~\Anaconda3\lib\site packages\pandas\core\frame.py如果不是索引和非原始长度:-

ValueError:如果使用所有标量值,则必须传递html" target="_blank">索引

共有1个答案

洪旻
2023-03-14

我刚刚测试了您的数据,您的一些货币对似乎根本不起作用,返回的json格式如下:

{"error":"Invalid currency pair."}

返回时,pd.read\u json抛出一个错误,因为它无法将其转换为数据帧。

最简单的解决方法是使用try-exceptbrake并处理任何不工作的ticker。

broken_tickers = []

for t in tickers:
    url ='https://poloniex.com/public?command=returnChartData&currencyPair={}&end=9999999999&period={}&start=0'.format(t, 86400)

    try:
        df = pd.read_json(url)
    except ValueError:
        broken_tickers.append(t)
        continue

    df.set_index('date')
    df.to_csv('{}.csv'.format(t))

我已经摆脱了这个功能,我真的觉得没有必要在这里,但是你可以把它加回来。

 类似资料:
  • 问题内容: 我在导入带有熊猫的JSON文件时遇到一些困难。 这是我得到的错误: 文件结构是这样简化的: 它来自Coursera的华盛顿大学的机器学习课程。您可以在这里找到文件。 问题答案: 尝试 该文件仅包含键值为标量的键值对。您可以使用将其转换为数据框。 您还可以执行以下操作: 现在数据就是字典。您可以将其传递给数据框构造函数,如下所示:

  • 我在导入带有熊猫的JSON文件时遇到了一些困难。 这是我得到的错误: 文件结构简化如下: 它来自Coursera上的华盛顿大学机器学习课程。你可以在这里找到文件。

  • 这可能是一个简单的问题,但我不知道如何做到这一点。假设我有两个变量,如下所示。 我想从这里构造一个数据帧: 这将生成一个错误: ValueError:如果使用所有标量值,则必须传递索引 我也试过: 这会给出相同的错误消息。

  • 我正在尝试使用python进行web抓取。当我试图创建一个数据帧来存储包含提取信息的变量时,它显示“ValueError:如果使用所有标量值,则必须传递索引”。我已经通过尝试索引查看了此网站中的其他相关帖子,但仍然无法解决此问题。请帮忙。

  • 目前,我使用for循环从文件夹中读取csv文件。读取csv文件后,我将数据存储到字典的一行中。当我使用"print(list_of_dfs.dtypes)"打印数据类型时,我会收到: 数据类型:对象日期时间:对象值:float64 ID:int64 ID名称:对象。 请注意,这是一个嵌套字典,每个数据字段中存储了数千个值。我有上面列出的26行结构。我试图将字典行附加到一个数据框中,其中我将只有一行

  • 在我之前的问题之后,一切都很好,但是当列表很长的时候,它显示了这个错误,这是一个简单的d: 有人知道我怎么修吗?先谢谢你。 NB:我从这里的回答中尝试了几种解决方案,但它们对我不起作用