我连续读取每秒更新 3 次的 price.csv,使用 df.nlargest 或 df.sort_values 按数量排序,哪种方法更快??
#Read stock price from price.csv, sort by volume, print Highest stock volume.
import pandas as pd
while 1==1:
try:
df=pd.read_csv ("R:/price.csv").dropna()
#df=df.nlargest(1,'volume') #first method
#df.sort_values('volume',ascending=False,inplace=True) #second method
print ("\t",df.iloc[0,0],df.iloc[0,1] )
except:
pass
del df
示例输出:
SNDL 79416563.0
SNDL 79552154.0
ITUB 20537823.0
PCG 24423451.0
EDU 104113726.0
TSM 5074870.0
EDU 105639190.0
ABEV 30110259.0
CEI 10292901.0
PCG 24739218.0
SWN 19374652.0
答案 0 :(得分:1)
好吧,我不确定。
但是,我喜欢的计算机科学学位告诉我,为了“找到最大值”进行排序不是要走的路。排序的计算复杂度充其量是 O(N),通常更接近 O(N*log(N))。而找到未排序列表的最大值(或最小值)总是 O(N)。
那么,这是什么意思?不要对文件进行排序以找到最大值,而是搜索它。这告诉我,从理论的角度来看,df.nlargest(1,'volume')
(第一种方法)很可能是您想要使用的方法。