如何从字典中提取数据?

时间:2020-08-03 18:18:50

标签: python pandas dataframe dictionary

我正在尝试将资产/免费/锁定字段以及相应的数据填充到列中。目前,我只能获得这些字段所在的余额列。

这是数据格式。在“平衡”之前,我不需要任何东西。在考虑是否可以删除字符串的这一部分,然后创建列?还是有另一种方法可以做到这一点?

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

任何帮助表示赞赏。让我感到难过。

1 个答案:

答案 0 :(得分:2)

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'}]}"