【发布时间】:2020-08-30 12:00:40
【问题描述】:
我有两个从 urls apis 解析的字典,用于加密率如下:
dict1
{'INR-BTC': {'Bid': '893201.4', 'Ask': '908286.6', 'LT Rate': '902553.6', 'LT Vol': '0.003604'}, 'INR-ETH': {'Bid': '30927', 'Ask': '32136', 'LT Rate': '31527.6', 'LT Vol': '2.752963'}, 'INR-XRP': {'Bid': '21.06', 'Ask': '21.79', 'LT Rate': '21.79', 'LT Vol': '50'}, 'INR-USDT': {'Bid': '77.5', 'Ask': '79.5', 'LT Rate': '76.5', 'LT Vol': '15.57'}, 'INR-BCH': {'Bid': '20709', 'Ask': '21325.2', 'LT Rate': '21005.4', 'LT Vol': '0.128696'}, 'INR-LTC': {'Bid': '4368', 'Ask': '4656.6', 'LT Rate': '4500.6', 'LT Vol': '6.7579'}, 'INR-XMR': {'Bid': '7152.6', 'Ask': '7566', 'LT Rate': '7378.8', 'LT Vol': '1.40361'}, 'INR-BUC': {'Bid': '3.1', 'Ask': '6', 'LT Rate': '5', 'LT Vol': '10000'}, 'INR-NEO': {'Bid': '1654.38', 'Ask': '1712.88', 'LT Rate': '1698.06', 'LT Vol': '15.599066'}, 'INR-DASH': {'Bid': '2300', 'Ask': '17000', 'LT Rate': '0', 'LT Vol': '0'}, 'INR-XDC': {'Bid': '0.5', 'Ask': '0.6', 'LT Rate': '0.5', 'LT Vol': '0'}, 'INR-TRX': {'Bid': '2.0358', 'Ask': '2.1372', 'LT Rate': '2.0748', 'LT Vol': '10411.99'}, 'INR-SOLVE': {'Bid': '0', 'Ask': '0', 'LT Rate': '0', 'LT Vol': '0'}}
dict2
{'btcinr': {'Bid': '882970.0', 'Ask': '886400.0', 'LT Rate': '886400.0', 'LT Vol': '81.1214'}, 'xrpinr': {'Bid': '21.0', 'Ask': '21.1', 'LT Rate': '21.0436', 'LT Vol': '207631.0'}, 'ethinr': {'Bid': '30900.9', 'Ask': '30938.0', 'LT Rate': '30938.0', 'LT Vol': '674.309'}, 'trxinr': {'Bid': '2.04', 'Ask': '2.045', 'LT Rate': '2.045', 'LT Vol': '9122716.0'}, 'zilinr': {'Bid': '0.0', 'Ask': '0.0', 'LT Rate': '0.26', 'LT Vol': '0.0'}, 'batinr': {'Bid': '27.058', 'Ask': '27.441', 'LT Rate': '27.154', 'LT Vol': '84890.92'}, 'usdtinr': {'Bid': '76.47', 'Ask': '76.48', 'LT Rate': '76.47', 'LT Vol': '640158.59'}, 'wrxinr': {'Bid': '10.4', 'Ask': '10.42', 'LT Rate': '10.4', 'LT Vol': '1238004.0'}, 'maticinr': {'Bid': '2.123', 'Ask': '2.149', 'LT Rate': '2.149', 'LT Vol': '992234.0'}, 'bchabcinr': {'Bid': '20590.0', 'Ask': '20932.0', 'LT Rate': '20932.0', 'LT Vol': '20.901'}, 'bnbinr': {'Bid': '1756.29', 'Ask': '1771.77', 'LT Rate': '1756.29', 'LT Vol': '201.05'}, 'bttinr': {'Bid': '0.03431', 'Ask': '0.0345', 'LT Rate': '0.0345', 'LT Vol': '93008934.0'}, 'chzinr': {'Bid': '0.0', 'Ask': '0.0', 'LT Rate': '0.0', 'LT Vol': '0.0'}, 'oneinr': {'Bid': '0.0', 'Ask': '0.0', 'LT Rate': '0.0', 'LT Vol': '0.0'}, 'ltcinr': {'Bid': '4435.53', 'Ask': '4457.0', 'LT Rate': '4457.0', 'LT Vol': '460.084'}}
如您所见,每个字典都有一个密钥,它是一个加密市场名称和一个嵌套字典,其中包含 'bid'、'ask' 等值。 然而,两个字典中的加密市场名称不同,但可以仅使用加密名称(如 btc)来解析它们。 (例如,dict1 有 'INR-BTC' 作为键,dict2 有 'btcinr' 作为键)
即使密钥不同,我也可以只搜索 BTC 并从每个列表中提取如下:
for key, value in dict1.items():
if 'BTC' in key:
print(key,value)
如上所述,在两个字典中按名称搜索每个加密货币将是乏味的。有没有更好的方法来做到这一点? 此外,我无法弄清楚如何将其转换为如图所示的表格格式。 任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
所以您基本上想要一个由
dict1和dict2构造的具有多索引列的数据框? -
不确定那是什么。你能指导我吗?谢谢
-
您需要基于
pandas的解决方案吗?只是想确保你用pandas.. 标记它。 -
任何解决方案都可以。 :)
-
那么如果
dict1包含某个货币对的Bid和Ask但dict2不包含该货币对,那么输出会是什么?在这种情况下NaN会好吗?
标签: python pandas dataframe dictionary cryptography