创建由多个数据框组成的多级熊猫数据框的最快方法是啥?
Posted
技术标签:
【中文标题】创建由多个数据框组成的多级熊猫数据框的最快方法是啥?【英文标题】:What is the fastest way to create one a multilevel pandas dataframe made from multiple dataframes?创建由多个数据框组成的多级熊猫数据框的最快方法是什么? 【发布时间】:2022-01-11 00:31:42 【问题描述】:基本上我正在执行以下操作,我认为可能有比在每个循环中执行 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)
【问题讨论】:
【参考方案1】:为了避免在每个步骤中追加和连接,您可以:
-
从您的元组数据创建迭代器
在迭代器上应用方法来解析数据帧并将其准备为所需的格式
在数据帧列表上应用一次 pd.concat。
当然,您需要修改逻辑以满足您想要的输出,但我希望它能让您掌握方法。
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])
【讨论】:
这加快了很多...从大约 3.5 秒到 0.65 秒!谢谢以上是关于创建由多个数据框组成的多级熊猫数据框的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章