Я пытаюсь сгенерировать словарь из кадра данных панд. В частности, мне нужно:
Взять первые (x) столбцы и использовать точки данных в каждой из их строк вместе в качестве ключей.
Составьте словарь для каждого ключа, используя оставшиеся точки данных в строке в качестве значений, в виде списка.
Давайте для простоты воспользуемся этим примером кадра данных.
- Создание кадра данных:
df = pd.DataFrame([
{'c1':a1, 'c2':110, 'c3':'xyz', 'c4':24},
{'c1':b2,'c2':100, 'c3':'jdf', 'c4':15},
{'c1':a1,'c2':110, 'c3':'kjl', 'c4':125},
{'c1':b2, 'c2':100, 'c3':'abc', 'c4':71},
])
c1 c2 c3 c4
0 a1 110 xyz 24
1 b2 100 jdf 15
2 a1 110 kjl 125
3 b2 100 abc 71
Получите следующее:
new_dict = some code
new_dict
{('a1', 110): [['xyz', 24], ['kjl', 125]], ('b2', 100): [['jdf', 15], ['abc', 71]]}
Я пробовал много-много вещей, включая создание списка списков кортежей для ключей, назначение уникальных списков в качестве ключей для нового словаря (с помощьюзначения пустые списки) - но я не могу затем заполнить значения.
Я могу скомпилировать словарь с одним столбцом в качестве ключа и всем остальным по мере необходимости, например:
test_dict = {}
for index, row in df.iterrows():
if row['c1'] in test_dict:
test_dict[row['c1']].append([row['c2'], row['c3'], row['c4']])
else:
test_dict[row['c1']] = []
test_dict[row['c1']].append([row['c2'], row['c3'], row['c4']])
Но я не могу сделать переход к объединениюнесколько столбцов в качестве ключа.