【问题标题】:How to iterate a function through a list of dataframe in python 3.7如何通过python 3.7中的数据框列表迭代函数
【发布时间】: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


【解决方案1】:

使用时:

for df in range(len(data)):
    # your loop

你的 df 只是整数,你应该使用这个循环 instea:

for df in data:
    # your loop

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 2018-03-19
    • 1970-01-01
    • 2013-12-27
    • 2021-10-07
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多