【发布时间】:2020-02-18 08:08:42
【问题描述】:
我有 1000 多个包含股票日期和价格的 .txt 文件,我已将它们转换为字典(文件名(股票行情)作为键,每个文件的数据作为数据框)。我用 .rolling 计算了移动平均线,然后找到了移动平均线和价格之间的百分比差异。因此,百分比差异是每个 DataFrame 自己的列。所有这些的代码如下所示:
filelist = os.listdir(r'Insert File Path')
filepath = r'Insert File Path'
dic1 = {}
for file in filelist:
df = pd.read_csv(filepath + file,sep='\t')
dic1[file]= df
for value in dic1.values():
value.rename(columns={value.columns[0]:'Dates',value.columns[1]:'Prices'},inplace=True)
for value in dic1.values():
value['ma'] = value['Prices'].rolling(window=50).mean()
for value in dic1.values():
value['diff'] = value['Prices'] - value['ma']
for value in dic1.values():
value['pctdiff']= value['diff']/value['Prices']
我的问题是如何找到 pctdiff 列的前 5 个最大(和最小,因为它们可能是负数)?
我试过了:
for df in dic1.values():
for num in df['pctdiff'].max():
print(num.max())
但我收到以下错误:“'float' 对象不可迭代”
【问题讨论】:
-
@itslwg 我不这么认为,因为那是在谈论一个数组,它是数据框中的一列。不过谢谢。
-
或者这个stackoverflow.com/questions/34133494/…。
pctdiff是熊猫系列吧?那我觉得你可以用这个
标签: python python-3.x pandas numpy finance