有没有办法提高DataFrame条件查找和赋值的效率

来源:2-8 使用JQData查询财务指标

慕粉17780521093

2021-06-27

老师您好
本节学习获取财务指标数据,因为我对股票代码不熟悉,想要在获取的数据中添加一行股票名称,于是编写了以下代码。最后运行貌似达到目的了,但是,运行时长也是让我大吃一惊,仅仅4000*4000数据的嵌套循环,耗时达到2分钟左右,请问除了使用更高效的编程语言外,有没有简单高效的办法达到我的目标。

import pandas as pd
from jqdatasdk import *
auth(“17780521093”,“821021Couldzb”)

“在存放2020年财务指标数据的文件中,添加一行,指明每一行财务数据对应的股票名称”

** 获取所有股票基本信息,包含股票代码和股票名称**
stocks= get_all_securities(‘stock’) #获取所有股票基本信息,存入DataFrame对象stocks

#读取存有20年财务指标数据的文件,存入finance2020
finance2020= pd.read_csv(’/Users/zhongbo/PycharmProjects/pythonProject1/ZhongBoQuant/Data/finance/finance2020.csv’)

#二层循环遍历stocks和finance2020的行,当finance2020的股票代码与stocks的行索引值相等时, 将stocks这一行的股票名称(display_name列)数据,存入与finance2020新增的列(display_name)
for i in finance2020.index:
for j in stocks.index:
if finance2020.loc[i,‘code’]== j:
finance2020.loc[i,‘display_name’]=stocks.loc[j,‘display_name’]

#将更新后的数据存入新文件finance2020_AddName
finance2020.to_csv(’/Users/zhongbo/PycharmProjects/pythonProject1/ZhongBoQuant/Data/finance/finance2020-AddName.csv’)

写回答

1回答

DeltaF

2021-06-27

我理解了,就是添加股票名称是吧?你直接在存的时候,加上名称就可以了,jq有个方法,是根究code查询displayname的

get_security_info('000001.XSHE').display_name

不需要for循环在另外一张表里查


1
2
慕粉17780521093
下一节的把df的字段设置成索引的方法,应该可行,明天试一下
2021-06-27
共2条回复

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

2012 学习 · 405 问题

查看课程