Я пытаюсь создать список списков в Python, используя np.where(pd.isnull(x))
для создания списков, которые будут добавлены. По сути, я пытаюсь выполнить цикл по data.frame, чтобы каждая строка находила, какие значения не являются нулевыми. Я использую np.where()
, потому что я хочу, чтобы индексы ненулевых значений были внутренним списком, который затем должен быть добавлен во внешний список. Этот внешний список будет уменьшен до уникальных значений. Моя текущая идея заключается в следующем:
outer_list = []
outer_list.append(list(range(0, number_of_columns)) #This is the longest possible return,
#but it may not be found in the data frame
for i in list(range(0, len(data_frame.index))):
row = data_frame.iloc[i,:].tolist()
item = np.where(pd.notnull(row))[0] #using [0] to turn the array into a list
outer_list.append(item)
unique_list = np.unique(outer_list)
Однако, когда я пытаюсь это item
возвращается к объекту массива (?), Например, array([5, 6, 7, 8], dtype=int64)
при добавлении, чего я не делаюхотеть. Очень важно, чтобы outer_list
содержал серию списков. Как я могу обойти это / как я должен делать это?
Я уверен, что это не лучший способ решения этой проблемы, поэтому любые предложения о том, как улучшить, также будут высоко оценены, я довольно новичок в Python.
Данные выглядят примерно так:
Я не знал, как лучше составить таблицу ...
Как и вышекод будет принимать индексы ненулевых значений и генерировать список списков, начиная с самого длинного списка (который будет добавлен вне цикла).
outer_list = []
outer_list.append([0,1,2,3,4])
Затем пройти по строкамтаблицы, добавив следующий список для каждой строки соответственно:
[0,1,2,3]
[1,2,3,4]
[2,3,4]
[0,1,2,3]
, который будет добавлен к outer_list
для получения следующего результата:
[[0,1,2,3,4], [0,1,2,3], [1,2,3,4], [2,3,4], [0,1,2,3]]
, который затем будетсокращено до уникального списка:
[[0,1,2,3,4], [0,1,2,3], [1,2,3,4], [2,3,4]]
Поскольку элементы 1 и 4 одинаковы.