![](/img/trans.png)
[英]What is the nicest (and fastest) way to create a flat dataframe from a multilevel dictionary
[英]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 在每一步你可以:
当然,您需要修改逻辑以满足您想要的 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.