繁体   English   中英

创建一个由多个数据帧制成的多级 pandas dataframe 的最快方法是什么?

[英]What is the fastest way to create one a multilevel pandas dataframe made from multiple dataframes?

基本上我正在执行以下操作,我认为可能有比在每个循环中执行 pd.concat 和 df.append 更快的方法?

final_df = pd.DataFrame()
for (key, data, date) in data_tuples:
    df = pd.DataFrame(data, columns=['Price', 'Quantity'])
    timestamp = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S GMT')
    df = pd.concat([df], axis=0, keys=[timestamp])
    df = pd.concat([df], axis=0, keys=[key])
    final_df = final_df.append(df)

final_df.index = final_df.index.rename(['symbol', 'time', 'row'])
final_df['Price'] = final_df['Price'].apply(float)
final_df['Quantity'] = final_df['Quantity'].apply(float)

为了避免 append 和 concat 在每一步你可以:

  1. 从您的元组数据创建迭代器
  2. 在迭代器上应用方法来解析 dataframe 并将其准备为所需的格式
  3. 在数据框列表上应用 pd.concat 一次。

当然,您需要修改逻辑以满足您想要的 output 但我希望它能让您掌握该方法。

import pandas as pd
from datetime import datetime



data_tuples = (("1", {"Price": [1,2], "Quantity":[1,2]}, "20:20:20"), ("1", {"Price": [3,4], "Quantity":[3,4]}, "20:20:30"))


def parse_values(data, date):
    df = pd.DataFrame(data, columns=['Price', 'Quantity'])
    df["date"] = date
    return df


df = pd.concat([parse_values(data,date) for _,data,date in data_tuples])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM