【问题标题】:How to extract data from a dictionary?如何从字典中提取数据?
【发布时间】:2020-11-23 20:09:08
【问题描述】:

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

这是数据格式。在“平衡”之前我不需要任何东西。想如果我可以删除这部分字符串,那么列会被创建吗?或者是否有其他方法可以做到这一点?

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

任何帮助表示赞赏。把我难住了。

【问题讨论】:

    标签: python pandas dataframe dictionary json-normalize


    【解决方案1】:
    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'}]}"
    

    【讨论】:

    • 非常感谢您提供的信息,我学到了一些新东西。解决方案效果很好。惊讶于 Python 的强大功能,而且在某些方面非常简单。但是语法和可以用这个来做到这一点,但不是这个。哇,很多。大声笑
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2021-11-25
    相关资源
    最近更新 更多