dict的DataFrame的速度提升?

时间:2017-07-22 16:05:37

标签: python pandas

我有一个符号字典:DataFrame。每个DataFrame都是一个具有任意列数的时间序列。我想将此数据结构转换为唯一的时间序列DataFrame(按日期索引),其中每列包含符号的值作为dict。

以下代码执行我想要的操作,但在具有数百个符号和10k行/ 10列的DataFrame的dict上执行时,代码很慢。我正在寻找提高速度的方法。

import pandas as pd


dates = pd.bdate_range('2010-01-01', '2049-12-31')[:100]

data = {
    'A': pd.DataFrame(data={'col1': range(100), 'col2': range(200, 300)}, index=dates),
    'B': pd.DataFrame(data={'col1': range(100), 'col2': range(300, 400)}, index=dates),
    'C': pd.DataFrame(data={'col1': range(100), 'col2': range(400, 500)}, index=dates)
}

def convert(data, name):
    data = pd.concat([
        pd.DataFrame(data={symbol: [dict(zip(df.columns, v)) for v in df.values]},
                     index=df.index)
        for symbol, df in data.items()
        ], axis=1, join='outer')
    data['type'] = name
    data.index.name = 'date'
    return data

result = convert(data, name='system')
result.head()

                                   A                           B                            C     type
date                
2010-05-18  {'col1': 97, 'col2': 297}   {'col1': 97, 'col2': 397}   {'col1': 97, 'col2': 497}   system
2010-05-19  {'col1': 98, 'col2': 298}   {'col1': 98, 'col2': 398}   {'col1': 98, 'col2': 498}   system
2010-05-20  {'col1': 99, 'col2': 299}   {'col1': 99, 'col2': 399}   {'col1': 99, 'col2': 499}   system

非常感谢任何帮助!谢谢。

0 个答案:

没有答案