У меня есть фрейм данных с двумя столбцами, и я собираюсь преобразовать его в словарь Python - первый столбец будет ключом, а второй - значением. Заранее спасибо.
Фрейм данных:
id value
0 0 10.2
1 1 5.7
2 2 7.4
python
dictionary
pandas
перигей
источник
источник
Ответы:
См. Документацию для
to_dict
. Вы можете использовать это так:И если у вас есть только один столбец, чтобы избежать имени столбца, это также уровень в dict (на самом деле, в этом случае вы используете
Series.to_dict()
):источник
>>> ptest = p.DataFrame([['a',1],['a',2],['b',3]], columns=['id', 'value']) >>> ptest.set_index('id')['value'].to_dict()
источник
Если вам нужен простой способ сохранить дубликаты, вы можете использовать
groupby
:источник
Ответы joris в этом потоке и punchagan в дублированном потоке очень элегантны, однако они не дадут правильных результатов, если столбец, используемый для ключей, содержит какое-либо дублированное значение.
Например:
Если у вас есть повторяющиеся записи и вы не хотите их терять, вы можете использовать этот уродливый, но рабочий код:
источник
mydict = defaultdict(list)\n for (key, val) in ptest[["id", "value"]].itertuples(index=False):\n mydict[key].append(val)
Самое простое решение:
Пример:
Если у вас есть несколько значений, например val1, val2, val3 и т. Д., И вы хотите, чтобы они были списками, используйте следующий код:
источник
records
здесь значит?records
здесь означает‘records’ : list like [{column -> value}, … , {column -> value}]
См. pandas.pydata.org/pandas-docs/stable/reference/api/…в некоторых версиях приведенный ниже код может не работать
так что сделайте это явным
Обратите внимание, я использовал id_, потому что слово id - зарезервированное слово
источник
Вы можете использовать "понимание слов"
источник
Другое (немного более короткое) решение, позволяющее не терять повторяющиеся записи:
источник
Вам нужен список как значение словаря. Этот код поможет.
источник
Я нашел этот вопрос, пытаясь сделать словарь из трех столбцов фрейма данных pandas. В моем случае фрейм данных имеет столбцы A, B и C (скажем, A и B - это географические координаты долготы и широты, а C - регион / штат страны / и т.д., что более или менее верно).
Мне нужен словарь, в котором каждая пара значений A, B (ключ словаря) соответствует значению C (значение словаря) в соответствующей строке (каждая пара значений A, B гарантированно уникальна из-за предыдущей фильтрации, но это возможно иметь одно и то же значение C для разных пар значений A, B в этом контексте), поэтому я сделал:
Также работает pandas to_dict () :
(ни один из столбцов A или B не использовался в качестве индекса до выполнения строки, создающей словарь)
Оба подхода работают быстро (менее одной секунды для фрейма данных с 85 КБ строк, быстрый двухъядерный ноутбук 5-летней давности).
Причины, по которым я публикую это:
источник
это моя шлюха, базовый цикл
источник
Это мое решение:
источник