请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师您好
本节学习获取财务指标数据,因为我对股票代码不熟悉,想要在获取的数据中添加一行股票名称,于是编写了以下代码。最后运行貌似达到目的了,但是,运行时长也是让我大吃一惊,仅仅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’)

正在回答 回答被采纳积分+3

1回答

DeltaF 2021-06-27 14:12:38

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

get_security_info('000001.XSHE').display_name

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信