创建列表列表时,Python列表索引必须是整数或切片,而不是str

时间:2019-04-12 01:22:16

标签: python pandas

我正在使用Python 3和pandas,我想在列表中创建一个列表,方法是遍历数据帧列表并拉出符合我条件的索引。我收到错误消息“列表索引必须是整数或切片,而不是str”。      我认为该功能可以正常工作,但是for循环不能正常工作。      我需要我的函数来读取数据帧中的一列,查找小于或等于0.05的值(在第5列中,标题为“ P> | z |”),并创建一个符合该条件的索引列表。 / p>

def list_of_new_variables(maker_df):
    # Create a list with only significant p values
    newlist = list(make_results[make_results['P>|z|']<=acceptable_p_value].index)[0:]    
    return newlist


newlist = []
for maker_df in make_results:
    newlist.append(list_of_new_variables(maker_df))

结果应为与每个数据框的列表中的条件匹配的索引列表。

这是我的样品: data to find indexes dataframes make_results

编辑

完全错误是:

  

回溯(最近通话最近一次):

     

文件“”的第10行,在       make_variables_refined.append(list_of_new_variables(make_results))

     

文件“”的第3行,在   list_of_new_variables       newlist = list(make_results [make_results ['P> | z |'] <= acceptable_p_value] .index)[0:]

     

TypeError:列表索引必须是整数或切片,而不是str

另一个编辑: 为了简化起见,尝试过该代码,并且还会收到错误“ TypeError:列表索引必须是整数或切片,而不是str”。我还尝试使用列引用而不是列名('P> | z |'),它返回了相同的错误。

make_variables_refined = []
for maker_df in make_results:
    make_variables_refined.append(make_results[int(make_results['P>|z|'])<=acceptable_p_value].index[0:])
  

回溯(最近通话最近一次):

     

文件“”的第3行,在       make_variables_refined.append(make_results [int(make_results ['P> | z |'])<= acceptable_p_value] .index [0:])

     

TypeError:列表索引必须是整数或切片,而不是str

4 个答案:

答案 0 :(得分:0)

索引必须是整数。将索引设置为整数:

def list_of_new_variables(maker_df):
    # Create a list with only significant p values
    newlist = list(make_results[make_results['P>|z|']<=acceptable_p_value].index)[0:]    
    return newlist


newlist = []
for maker_df in make_results:
    newlist.append(list_of_new_variables(int(maker_df)))

答案 1 :(得分:0)

在列表中进行引用和索引时,索引必须为整数形式。就你而言我认为错误在于这一行:

newlist = list(make_results[make_results['P>|z|']<=acceptable_p_value].index)[0:]

方括号中的值应为整数

尝试:

newlist = list(make_results[int(make_results['P>|z|')]<=acceptable_p_value].index)[0:]

答案 2 :(得分:0)

make_results是数据仓库的列表。在第3行中,可以通过make_results['P>|z|']访问它。这会产生错误。 在您的情况下,目标是找到与具有P> | z |的记录关联的索引。值小于或等于0.05。因此,第10行应该是

newlist = list(make_df[make_df['P>|z|']<=acceptable_p_value].index)[:] 

答案 3 :(得分:0)

最后,我使用以下命令从原始数据框中删除了变量:

for datas in make_results:
    datas.drop(datas.loc[datas['P>|z|'] > .05].index, inplace=True)