Łatwo jest zmienić listę list w ramkę danych pandy:
import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])
Ale jak zmienić df z powrotem w listę list?
lol = df.what_to_do_now?
print lol
# [[1,2,3],[3,4,5]]
Możesz uzyskać dostęp do podstawowej tablicy i wywołać jej tolist
metodę:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
L
na wyjściu są dołączane s?df.to_numpy().tolist()
.Jeśli dane mają etykiety kolumn i indeksów, które chcesz zachować, istnieje kilka opcji.
Przykładowe dane:
tolist()
Metoda opisana w innych odpowiedzi jest przydatne, ale przynosi tylko podstawowe dane - co może nie wystarczyć, w zależności od potrzeb.Jednym ze sposobów jest przekonwertowanie na
DataFrame
json przy użyciu,df.to_json()
a następnie ponowne przeanalizowanie. Jest to kłopotliwe, ale ma pewne zalety, ponieważto_json()
metoda ta ma kilka przydatnych opcji.Uciążliwe, ale mogą być przydatne.
Dobra wiadomość jest taka, że tworzenie list dla kolumn i wierszy jest całkiem proste:
To daje:
Jeśli
None
nazwa indeksu jest uciążliwa, zmień jej nazwę:Następnie:
źródło
DataFrame.itertuples()
czyDataFrame.to_records()
do tego wszystkiego?Chciałem zachować indeks, więc oryginalną odpowiedź dostosowałem do tego rozwiązania:
Teraz możesz wkleić go gdzie indziej (np. Aby wkleić do pytania Stack Overflow), a następnie odtworzyć:
źródło
Nie wiem, czy będzie pasować do Twoich potrzeb, ale możesz też:
To jest po prostu tablica numpy z modułu ndarray, która pozwala ci robić wszystkie zwykłe tablice numpy.
źródło
Może coś się zmieniło, ale to dało listę ndarrayów, które zrobiły to, czego potrzebowałem.
źródło
Uwaga: widziałem wiele przypadków przepełnienia stosu, w których konwersja serii Pandas lub DataFrame do tablicy NumPy lub zwykłych list Pythona jest całkowicie niepotrzebna. Jeśli jesteś nowy w bibliotece, rozważ podwójne sprawdzenie, czy potrzebna funkcjonalność jest już oferowana przez te obiekty Pandas.
Cytując komentarz @jpp:
Jeśli Pandas DataFrame / Series nie będzie działać, możesz użyć wbudowanych
DataFrame.to_numpy
iSeries.to_numpy
metod.źródło
for elem in some_series.values.tolist():
ponieważ nie wiedzą, że można iterować po elementach serii. Nie jestem pewien, co jest takiego okropnego w tej odpowiedzi.To jest bardzo proste:
źródło
DataFrame.values
lubDataFrame.to_numpy()
? Nieważne, że tworzy tablicę NumPy, a nie zwykłą listę Pythona.„df.values” zwraca tablicę numpy. Nie zachowuje to typów danych. Liczba całkowita może zostać przekonwertowana na liczbę zmiennoprzecinkową.
df.iterrows () zwraca serię, która również nie gwarantuje zachowania typów danych. Zobacz: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html
Poniższy kod konwertuje do listy list i zachowuje typy danych:
źródło
Możemy użyć funkcji DataFrame.iterrows () do iteracji po każdym z wierszy danej Dataframe i skonstruowania listy z danych każdego wiersza:
Możemy z powodzeniem wyodrębnić każdy wiersz danej ramki danych do listy
źródło