ПРОБЛЕМА: снова преобразовать filter(None, Dictionary)
в словарь при фильтрации пустых ключей.
Я пытаюсь обработать некоторые лабораторные данные, используя Pandas DataFrame. Я группирую эти данные с учетом первых двух столбцов по группам, используя словари; см. следующий код:
d = {'col1': [1, 1, 1, 2], 'col2': [1, 2, 2, 2], 'col3': [1, 2 ,3, 4], 'col4': [2,1,1,1,], 'col5': [2,1,0,0], 'col6': [2,1,3,1]}
df = pd.DataFrame(data=d)
all_groups = {}
for i in df.col1.unique():
for j in df.col2.unique():
all_groups[f'{i}-{j}'] = df[(df.col1 == i) & (df.col2 == j)]
Затем я хотел бы очистить все пустые ключи с помощью функционального фильтра: filter(None, all_groups)
, который выглядит как ответ на следующий вопрос:
[ как удалить пустой dict внутри списка словаря?
В документации сказано:
Вернуть итератор, выдающий те элементы итерируемой для какой функции (пункт) это правда. Если функция None, вернуть элементы, которые имеют значение true.
Мне нужно снова преобразовать эту возвращенную последовательность в словарь, но я не знаю как, потому что это просто объект фильтра.
РЕДАКТИРОВАТЬ 1: я пытался с лямбда-функциями:
hello = dict(filter(lambda x: len(x) != 0, all_groups))
ValueError: dictionary update sequence element #0 has length 12; 2 is required