如何从字典中提取数据?
How to extract data from a dictionary?
我正在尝试获取 asset/free/locked 字段以及相应的数据以填充到列中。目前,我只能获取这些字段所在的余额列。
这是数据格式。在 'balances' 之前我不需要任何东西。考虑是否可以删除字符串的这一部分,然后创建列?或者是否有其他方法可以做到这一点?
'{'makerCommission': 10, 'takerCommission': 10, 'buyerCommission': 0, 'sellerCommission': 0, 'canTrade': True, 'canWithdraw': True, 'canDeposit': True, 'updateTime': 1595872633345, 'accountType': 'MARGIN', 'balances': [{'asset': 'BTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'LTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'ETH', 'free': '0.00000000', 'locked': '0.00000000'}...'
到目前为止获取余额的代码是:
account = client.get_account()
assets = pd.DataFrame(account, columns = ['balances'])
感谢任何帮助。把我难住了。
- 如果
account
是 string
,则必须使用 ast.literal_eval
将其转换为 dict
。
- 将
account
作为dict
,使用pandas.json_normalize
提取嵌套的keys
和values
from ast import literal_eval
import pandas as pd
# if account is a string
assets = pd.json_normalize(literal_eval(account), 'balances')
# if account is a dict
assets = pd.json_normalize(account, 'balances')
# display(assets)
asset free locked
0 BTC 0.00000000 0.00000000
1 LTC 0.00000000 0.00000000
2 ETH 0.00000000 0.00000000
示例数据为 str
data = "{'makerCommission': 10, 'takerCommission': 10, 'buyerCommission': 0, 'sellerCommission': 0, 'canTrade': True, 'canWithdraw': True, 'canDeposit': True, 'updateTime': 1595872633345, 'accountType': 'MARGIN', 'balances': [{'asset': 'BTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'LTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'ETH', 'free': '0.00000000', 'locked': '0.00000000'}]}"
我正在尝试获取 asset/free/locked 字段以及相应的数据以填充到列中。目前,我只能获取这些字段所在的余额列。
这是数据格式。在 'balances' 之前我不需要任何东西。考虑是否可以删除字符串的这一部分,然后创建列?或者是否有其他方法可以做到这一点?
'{'makerCommission': 10, 'takerCommission': 10, 'buyerCommission': 0, 'sellerCommission': 0, 'canTrade': True, 'canWithdraw': True, 'canDeposit': True, 'updateTime': 1595872633345, 'accountType': 'MARGIN', 'balances': [{'asset': 'BTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'LTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'ETH', 'free': '0.00000000', 'locked': '0.00000000'}...'
到目前为止获取余额的代码是:
account = client.get_account()
assets = pd.DataFrame(account, columns = ['balances'])
感谢任何帮助。把我难住了。
- 如果
account
是string
,则必须使用ast.literal_eval
将其转换为dict
。 - 将
account
作为dict
,使用pandas.json_normalize
提取嵌套的keys
和values
from ast import literal_eval
import pandas as pd
# if account is a string
assets = pd.json_normalize(literal_eval(account), 'balances')
# if account is a dict
assets = pd.json_normalize(account, 'balances')
# display(assets)
asset free locked
0 BTC 0.00000000 0.00000000
1 LTC 0.00000000 0.00000000
2 ETH 0.00000000 0.00000000
示例数据为 str
data = "{'makerCommission': 10, 'takerCommission': 10, 'buyerCommission': 0, 'sellerCommission': 0, 'canTrade': True, 'canWithdraw': True, 'canDeposit': True, 'updateTime': 1595872633345, 'accountType': 'MARGIN', 'balances': [{'asset': 'BTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'LTC', 'free': '0.00000000', 'locked': '0.00000000'}, {'asset': 'ETH', 'free': '0.00000000', 'locked': '0.00000000'}]}"