Vor diesem DataFrame
:Pandas: ein Wörterbuch mit einer Liste von Spalten erstellen als Werte
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
ein Wörterbuch aus df
mit erstellen
a=df.set_index('first')['second'].to_dict()
, damit ich entscheiden kann, was keys
ist und was ist values
. Aber was, wenn Sie möchten, dass values
eine Liste von Spalten ist, wie second
AND third
?
Wenn ich versuche, dieses
b=df.set_index('first')[['second','third']].to_dict()
ich ein seltsames Wörterbuch der Wörterbücher
{'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'}}
Stattdessen möchte ich ein Wörterbuch von Listen
{0: [10.199999999999999,a],
1: [5.7000000000000002,b],
2: [7.4000000000000004,c],
3: [17.100000000000001,d],
4: [86.109999999999999,e]}
Wie damit umgehen ?
Meine echte "erste" ist eine Spalte von Zahlen als "Strings" (alphanumerische Werte, in aller Ehrlichkeit) codiert. Wenn sie in das Wörterbuch übertragen werden, erscheinen sie wie 'u'112233'. Wie man dieses "u" (Unicode) loswird? – FaCoffee
Das 'du' beeinflusst nicht wirklich die "Integrität" dieser Strings, aber wenn du es weg haben willst, würde ich 'map (str, df ['first'])' 'versuchen. Oder auch 'df ['first'] = [str (x) für x in df ['first']]' – blacksite
Dies sollte wahrscheinlich als separate Frage gehen, aber was ist, wenn Sie das Tupel '(first, second)' wollen als Schlüssel des Wörterbuchs? – FaCoffee