Учитывая это DataFrame
:Панды: создать словарь со списком столбцов, значения
import pandas as pd
first=[0,1,2,3,4]
second=[10.2,5.7,7.4,17.1,86.11]
third=['a','b','c','d','e']
fourth=['z','zz','zzz','zzzz','zzzzz']
df=pd.DataFrame({'first':first,'second':second,'third':third,'fourth':fourth})
df=df[['first','second','third','fourth']]
first second third fourth
0 0 10.20 a z
1 1 5.70 b zz
2 2 7.40 c zzz
3 3 17.10 d zzzz
4 4 86.11 e zzzzz
Я могу создать словарь из df
используя
a=df.set_index('first')['second'].to_dict()
, так что я могу решить, что keys
и что такое values
. Но что, если вы хотите, чтобы список столбцов, например second
AND third
?
Если бы я попробовать этот
b=df.set_index('first')[['second','third']].to_dict()
я получаю странный словарь словарей
{'second': {0: 10.199999999999999,
1: 5.7000000000000002,
2: 7.4000000000000004,
3: 17.100000000000001,
4: 86.109999999999999},
'third': {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}}
Вместо этого я хочу словарь списков
{0: [10.199999999999999,a],
1: [5.7000000000000002,b],
2: [7.4000000000000004,c],
3: [17.100000000000001,d],
4: [86.109999999999999,e]}
Как бороться с этим ?
Мой настоящий «первый» - это столбец чисел, закодированный как «строки» (буквенно-цифровые значения, честно говоря). Поэтому при портировании в словарь они выглядят как 'u'112233''. Как избавиться от этого 'u' (unicode)? – FaCoffee
Это «u» на самом деле не влияет на «целостность» этих строк, но если вы хотите, чтобы оно исчезло, я бы попробовал «map (str, df ['first'])'. Или даже 'df ['first'] = [str (x) для x в df ['first']]' – blacksite
Это, вероятно, должно быть отдельным вопросом, но что, если вы хотите кортеж '(first, second)' как ключ словаря? – FaCoffee