python - 使用 python pandas 在循环中加入股票 DataFrames 的内存问题
问题描述
我正在尝试加入很多数据框以便在熊猫中做相关矩阵。因此,似乎我必须继续在右侧添加列,以“日期”作为索引。但是,当我尝试仅使用 50 个数据帧执行此功能时,它以内存错误结束。
有谁知道发生了什么?
def taking_and_combining_data_from_mysql_to_excel(root):
saved_path = root + "\main_df.xlsx"
main_df = pd.DataFrame()
mycursor = mydb.cursor(buffered=True)
for key, value in stock_dic.items():
mycursor.execute("""SELECT date, Adj_close
FROM hk_stock
Where date >= '2020-03-13 00:00:00' and stock_number = '{}'""".format(key))
row_result = mycursor.fetchall()
df = pd.DataFrame(row_result)
df.columns = ['Date', value]
df.set_index('Date',inplace=True)
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df,how="outer")
with pd.ExcelWriter(saved_path) as writer:
main_df.to_excel(writer,sheet_name="raw_data")
main_df.corr().to_excel(writer,sheet_name="correlation")
return main_df
解决方案
Pandas
不是为这种动态连接而设计的。您可以将内容附加到列表中,然后将该列表转换为 DataFrame。像这样:
join=[]
for key, value in stock_dic.items():
join.append({'Date':value} )
df_join=pd.DataFrame(join)
推荐阅读
- javascript - 删除自定义标记(Google Maps Directions API)
- android - 压缩 Maybe 和 Single 会导致不发出任何结果
- excel - 将 Excel 的 SUMPRODUCT 与 SEARCH 一起使用并忽略空白单元格
- javascript - 如何通过javascript获取图像的大小?
- javascript - 带有 uikit 的粘性图像
- android - 无法在我的应用程序中使用 barteksc PDF 查看器
- spring-boot - 尝试使用 mysql 学习带有外键和一对多关系关系的 Springboot 但是
- mongodb - MongoDB 聚合 - 加入 ($lookup) 具有某些最高值的单个文档
- laravel - 德语中的 Laravel 状态
- java - 将流程从 for 循环转移到 switch case