Mam DataFrame z czterema kolumnami. Chcę przekonwertować tę ramkę DataFrame na słownik języka Python. Chcę, aby elementy pierwszej kolumny były, keys
a elementy innych kolumn w tym samym wierszu values
.
Ramka danych:
ID A B C
0 p 1 3 2
1 q 4 3 2
2 r 4 0 9
Wynik powinien wyglądać następująco:
Słownik:
{'p': [1,3,2], 'q': [4,3,2], 'r': [4,0,9]}
python
pandas
dictionary
dataframe
Książę Bhatti
źródło
źródło
Dataframe.to_dict()
?Dataframe.to_dict()
zrobiA,B,C
klucze zamiastp,q,r
Odpowiedzi:
to_dict()
Metoda ustawia nazwy kolumn kluczy słownikowych tak musisz przekształcić swój DataFrame nieznacznie. Jednym ze sposobów osiągnięcia tego jest ustawienie kolumny „ID” jako indeksu, a następnie transpozycja ramki DataFrame.to_dict()
akceptuje również argument „orient”, którego będziesz potrzebować, aby wyświetlić listę wartości dla każdej kolumny. W przeciwnym razie słownik formularza{index: value}
zostanie zwrócony dla każdej kolumny.Te kroki można wykonać za pomocą następującego wiersza:
W przypadku, gdy potrzebny jest inny format słownika, oto przykłady możliwych argumentów orient. Rozważmy następującą prostą ramkę DataFrame:
Następnie opcje są następujące.
dict - wartość domyślna: nazwy kolumn to klucze, wartości to słowniki pary indeks: dane
lista - klucze to nazwy kolumn, wartości to listy danych kolumn
seria - jak „lista”, ale wartości to Serie
split - dzieli kolumny / dane / indeks jako klucze, których wartości są nazwami kolumn, a wartościami danych odpowiednio etykietami wierszy i indeksów
rekordy - każdy wiersz staje się słownikiem, w którym klucz to nazwa kolumny, a wartość to dane w komórce
indeks - jak „rekordy”, ale słownik słowników z kluczami jako etykietami indeksu (zamiast listy)
źródło
df.set_index('ID').T.to_dict('list')
Spróbuj użyć
Zip
Wynik:
źródło
Wykonaj następujące kroki:
Załóżmy, że twoja ramka danych wygląda następująco:
1. Użyj,
set_index
aby ustawićID
kolumny jako indeks ramki danych.2. Użyj
orient=index
parametru, aby indeks był kluczami słownika.Wyniki będą następujące:
3. Jeśli chcesz, aby każdy przykład był listą, uruchom następujący kod. Określ kolejność kolumn
źródło
Jeśli nie przeszkadza Ci to, że wartości słownikowe są krotkami, możesz użyć itertuples:
źródło
powinien słownik taki jak:
być wymagane z ramki danych, takiej jak:
Najprościej byłoby zrobić:
działający fragment poniżej:
źródło
Do mojego użytku (nazwy węzłów z pozycjami xy) znalazłem odpowiedź @ user4179775 na najbardziej pomocną / intuicyjną:
Uzupełnienie
Później wróciłem do tej kwestii, do innej, ale pokrewnej pracy. Oto podejście, które dokładniej odzwierciedla [doskonałą] zaakceptowaną odpowiedź.
Konwertuj ramkę danych Pandas na [list], {dict}, {dict of {dict}}, ...
Za zaakceptowaną odpowiedź:
W moim przypadku chciałem zrobić to samo, ale z wybranymi kolumnami z ramki danych Pandas, więc musiałem pokroić kolumny. Istnieją dwa podejścia.
(zobacz: Konwertuj pandy na słownik definiujący kolumny używane dla wartości kluczowych )
lub
które następnie można wykorzystać do stworzenia słownika słowników
źródło
DataFrame.to_dict()
konwertuje DataFrame na słownik.Przykład
Zobacz ten Dokumentacja szczegóły
źródło