【发布时间】:2018-09-19 14:59:47
【问题描述】:
我有一个数字列表,我想找到这些数字的所有不同组合而不重复。 从那里开始,下一步是按列号过滤数据帧 df 的列;列号是先前找到的组合。然后我必须在每次迭代时对新过滤的数据帧进行一些计算。
假设我有以下代码:
import pandas as pd
import numpy as np
import itertools
lst = [1, 2, 3] #intial list
for i in range(1,4) #combs can have 1, 2 or 3 numbers
combs = [] #empty list to store combinations
els = [list(x) for x in itertools.combinations(lst, i)]
for j in range(0,len(els)): #loop through each combination found
temp_list=els[j]
temp_df=df.iloc[:temp_list]
#...Do some calculations with temp_df#
运行此代码,我收到以下错误:无法使用类“列表”的这些索引器 [[1]] 进行切片索引
我认为我的代码中的 els 也是列表(和 temp_list)的列表。所以我尝试将它们展平以获得列表(此主题已在此处介绍,例如:Making a flat list out of list of lists in Python)
但是,当运行这一行时
flat_list = [item for sublist in temp_list for item in sublist]
我得到一个新错误:'int' 对象不可迭代。 如何获取可用于过滤数据框的数字列表?谢谢
【问题讨论】: