无需使用pd.concat即可连接数百万个数据帧的更快方法

时间:2019-04-24 10:20:38

标签: python pandas

我在一个pickle文件中存储了大约1200万个数据帧作为数据帧列表。我想将这些数据框串联起来,只有一个数据框。

我尝试了以下方法:

  1. pd.concat这非常慢。

  2. 来自https://gist.github.com/TariqAHassan/fc77c00efef4897241f49e61ddbede9e的建议,大约需要24小时。

1的Python代码:

'''

from src.utils import load_pickle 
data = load_pickle('the file path')
result = pd.concat(data)

'''

2的Python代码:

'''

def fast_flatten(input_list):
    return list(chain.from_iterable(input_list))
COLUMN_NAMES = data[0].columns
df_dict = dict.fromkeys(COLUMN_NAMES, [])
for col in tqdm(COLUMN_NAMES):
    extracted = (frame[col] for frame in data) # Use a generator to save memory
    df_dict[col] = fast_flatten(extracted)  # Flatten and save to df_dict
result = pd.DataFrame.from_dict(df_dict)[COLUMN_NAMES]

'''

最终结果的大小应为20000042乘47。

我将感谢您采用任何有效的方式来减少24小时的时间。

谢谢

0 个答案:

没有答案