Я пытаюсь выбрать поля данных, которые имеют только два значения [0, 1]. Мой код работает для одного столбца, однако он терпит неудачу, когда я пытаюсь перебрать много столбцов.
Вот пример набора данных:
df = pd.DataFrame({'a':np.random.randint(0,2, size = (10)),
'b':np.random.randint(0,2, size = (10)),
'c':np.random.randint(0,6, size = (10)),
'd': ['x', 'y']*5
})
df
данные выглядят так:
df.to_dict()
{'a': {0: 1, 1: 1, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 1, 8: 0, 9: 1},
'b': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 1, 7: 1, 8: 0, 9: 1},
'c': {0: 1, 1: 1, 2: 2, 3: 2, 4: 5, 5: 2, 6: 2, 7: 0, 8: 4, 9: 3},
'd': {0: 'x',
1: 'y',
2: 'x',
3: 'y',
4: 'x',
5: 'y',
6: 'x',
7: 'y',
8: 'x',
9: 'y'}}
Должны быть выбраны столбцы «a» и «b». Строка ниже дает true, что я и хочу.
list(set(df[mylist[0]])) == [0,1]
Почему я получаю keyError, когда я запускаю это:
mylist = list(df.columns)
for i in mylist:
if list(set(df[mylist.index(i)])) == [0,1]:
print(i)
KeyError: 0
Я пытаюсь вывести список имен столбцов, чтоудовлетворять условию ЕСЛИ.