最简单的方法来拼合字典&转换为Pandas Dataframe

时间:2016-06-24 13:20:53

标签: python-3.x pandas

我有一本看起来像这样的字典......

{'Bitfinex': {'BTC/USD': [{'buy or sell': 'buy',
                           'date': '1466673272.0',
                           'margin': False,
                           'order number': 841508598,
                           'price': '391.42',
                           'type': 'exchange limit',
                           'volume': '0.01490759'},
                            {'buy or sell': 'buy',
                           'date': '1466673283.0',
                           'margin': False,
                           'order number': 841509160,
                           'price': '150.11',
                           'type': 'exchange limit',
                           'volume': '0.04342146'}]},
 'Poloniex': {'USDT/BTC': [{'buy or sell': 'buy',
                            'date': '2016-06-24 09:14:31',
                            'margin': False,
                            'order number': '5299560256',
                            'price': '1.00112000',
                            'volume': '10.63783387'},
                           {'buy or sell': 'buy',
                            'date': '2016-06-24 09:14:29',
                            'margin': False,
                            'order number': '5299559257',
                            'price': '10.01190000',
                            'volume': '1.00490446'},
                           {'buy or sell': 'buy',
                            'date': '2016-06-24 09:14:26',
                            'margin': False,
                            'order number': '5299553263',
                            'price': '100.08200000',
                            'volume': '0.04170130'}]}}

我需要它成为一个像这样的列的Pandas数据框:

Exchange | Currency Pair | Buy or Sell | Date | Margin | Order Number | Price | Volume

有没有一种简单的方法可以做到这一点,而无需迭代键和&值?

1 个答案:

答案 0 :(得分:1)

“轻松”在这里非常主观。我怀疑有没有办法做到这一点,而无需重复键和键;价值观,至少没有一些功能性的魔力,如果它更短,更易读/可理解,那就值得怀疑。

如果您想尝试迭代,可以使用以下内容执行此操作,其中INPUT是您的输入字典,如示例所示:

import pandas as pd

...

def convertToDataFrameItems(olddata):
    name_map={
        'buy or sell': 'Buy or Sell',
        'date': 'Date',
        'margin': 'Margin',
        'order number': 'Order Number',
        'price': 'Price',
        'volume': 'Volume'
    }
    for ex, currencies in olddata.items():
        for currency, data in currencies.items():
            for item in data:
                d = dict()
                for oldname,newname in name_map.items():
                    d[newname] = item[oldname]
                d.update({"Exchange":ex,"Currency Pair":currency})
                yield d

pd.DataFrame([x for x in convertToDataFrameItems(INPUT)])

在将数据映射到单个集合之后,此list of dictionary构造函数应根据需要创建列。

注意:由于我没有安装panda,所以无法测试代码