【发布时间】:2020-04-07 14:33:05
【问题描述】:
我有一个 DataFrames 列表,即 data = [df1,df2,df3.....dfn] 。我正在尝试通过数据列表迭代函数 maxloc 并将新值附加到 new_max。它给了我以下错误 TypeError:'int' 对象不可迭代。我该如何解决?
def max(data):
data['loc_max'] = np.zeros(len(data))
for i in range(1,len(data)-1):
if data['value'][i] >= data['value'][i-1] and data['value'][i] >= data['value'][i+1]:
data['loc_max'][i] = 1
return data
def maxloc(data):
loc_opt_ind = argrelextrema(df['values'].values, np.greater)
loc_max = np.zeros(len(data))
loc_max[loc_opt_ind] = 1
data['loc_max'] = loc_max
return data
new_max= []
for df in range(len(data)):
max_values = maxloc(df).loc_max
new_max.append(max_values)
【问题讨论】:
-
您能否在您的代码部分中包含
data = [df1,df2,df3.....dfn]的简化定义,以便您的错误可以重现? -
当你
for df in range(len(data)):你的df只是整数1 2 3 ...,你需要改变for index, df in enumerate(data)上的循环 -
你的意思是做
for df in data:以便每个循环 df 成为称为数据的数据帧列表中的下一个数据帧? -
@ChrisDoyle 是的
-
@ChrisDoyle 有效吗?是的,让我把它作为答案,如果不是,请阅读罗伯托的评论并给我们一些简单的例子,请
标签: python python-3.x pandas numpy scipy