python - 将字典解压到 Pandas DataFrame 中

标签 python python-3.x pandas list dictionary

我正在下载财务数据,这些数据位于 Python 列表中的字典中,如下所示:

[{'complete': True,
  'volume': 2,
  'time': '2004-05-31T21:00:00.000000000Z',
  'mid': {'o': '6.07260', 'h': '6.07260', 'l': '6.07260', 'c': '6.07260'}},
 {'complete': True,
  'volume': 2,
  'time': '2004-06-01T21:00:00.000000000Z',
  'mid': {'o': '6.08790', 'h': '6.08790', 'l': '6.08790', 'c': '6.08790'}}]

我有好几百万个这样的数据点,我想将它们放入 Pandas 中。

到目前为止,我已经使用了以下代码:

    v = []
    for keys in [x.split(":") for x in m.keys()]:
        _v = r.get(keys[0])
        for k in keys[1:]:
            _v = _v.get(k)
        v.append(_v)

    return v

record_converter = convrec if conv is None else conv
column_map_ohlcv = OrderedDict([
   ('time', 'Date'),
   ('mid:o', 'Open'),
   ('mid:h', 'High'),
   ('mid:l', 'Low'),
   ('mid:c', 'Close'),
   ('volume', 'Volume')
])
cmap = column_map_ohlcv if colmap is None else colmap
df = pd.DataFrame([list(record_converter(rec, cmap)) for rec in r.get('candles')])
df.columns = list(cmap.values())

它可以工作,但它不是很快,因为我需要将“mid”分成不同的列?

是否有一些更直接的方法可以将其放入数据帧而不使用循环?例如使用 numpy 或 pandas 来完成繁重的工作?

期望的结果应该是一个看起来像这样的 Pandas 数据框:

Date                    Open    High    Low     Close   Volum

2004-05-31 21:00:00    6.0726   6.0726  6.0726  6.0726  2
2004-06-01 21:00:00    6.0879   6.0879  6.0879  6.0879  2

最佳答案

类似这样的东西会起作用(您的输入列表称为l):

tempdf = pd.DataFrame(l)

产生

   complete                                                mid                            time  volume
0      True  {'o': '6.07260', 'h': '6.07260', 'l': '6.07260...  2004-05-31T21:00:00.000000000Z       2
1      True  {'o': '6.08790', 'h': '6.08790', 'l': '6.08790...  2004-06-01T21:00:00.000000000Z       2

现在您可以将 mid 中的字典拆分为几列并使用 concat:

df = pd.concat([tempdf.drop('mid', axis=1), tempdf['mid'].apply(pd.Series)], axis=1)

这给出了期望的结果:

   complete                            time  volume        o        h        l        c
0      True  2004-05-31T21:00:00.000000000Z       2  6.07260  6.07260  6.07260  6.07260
1      True  2004-06-01T21:00:00.000000000Z       2  6.08790  6.08790  6.08790  6.08790

关于python - 将字典解压到 Pandas DataFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54469323/

相关文章:

pandas - 将字典值替换为数据框

python - 如何矢量化我的代码并获取所有唯一对

Python 重新查找下划线和 ext 之间的字符串

python - 奇怪的 python 正则表达式行为 - 可能连接到 unicode 或 sqlalchemy

function - 编写函数的简单方法,该函数使用不同的给定输入执行不同的步骤

python - 根据另一个数据框中给定的值更新数据框列名

python - 使用 readlines() 是比创建列表更好的方法吗?

python - 使用 BeautifulSoup4 (python 3.4) 删除所有 HTML 标签

python - 通过理解中的连续更新创建字典

python - 如何根据列值乘以 2 个不相等的数据框?