Mam dokument programu Excel, który wygląda następująco ..
cluster load_date budget actual fixed_price
A 1/1/2014 1000 4000 Y
A 2/1/2014 12000 10000 Y
A 3/1/2014 36000 2000 Y
B 4/1/2014 15000 10000 N
B 4/1/2014 12000 11500 N
B 4/1/2014 90000 11000 N
C 7/1/2014 22000 18000 N
C 8/1/2014 30000 28960 N
C 9/1/2014 53000 51200 N
Chcę mieć możliwość zwrócenia zawartości kolumny 1 - klastra jako listy, aby móc uruchomić nad nią pętlę for i utworzyć arkusz programu Excel dla każdego klastra.
Czy jest również możliwe, aby zwrócić zawartość całego wiersza do listy? na przykład
list = [], list[column1] or list[df.ix(row1)]
.tolist()
aby zamienić je w listę python.values
NIE JUŻ WIĘCEJ będzie preferowaną metodą dostępu do podstawowych tablic numpy. Zobacz tę odpowiedź .df.to_numpy().tolist()
powinno być w porządku w większości przypadków użycia.list(x)
Odpowiedzi:
Kolumny Pandas DataFrame są seriami Pandas po ich wyciągnięciu, które można następnie wywołać
x.tolist()
w celu przekształcenia ich w listę Pythona. Możesz też rzucić go za pomocąlist(x)
.Wynik:
źródło
Zwraca tablicę numpy:
Zwraca tablicę numpy unikalnych wartości:
Możesz także użyć numpy, aby uzyskać unikalne wartości, chociaż istnieją różnice między dwiema metodami:
źródło
Przykładowa konwersja:
Tablica Numpy -> Ramka danych Panda -> Lista z jednej kolumny Panda
Tablica Numpy
Konwertuj tablicę numpy na ramkę danych Panda
Konwertuj jedną ramkę Panda na listę
pdToList = list(dataPd['2'])
źródło
df = pd.DataFrame(data=[[10, 20, 30], [20, 30, 60], [30, 60, 90]])
jest prostsze? Zwróć także uwagę na nazwę zmiennej i białe znaki zgodne z konwencjami stylu Python. Powtórz listę jako dowód Co to dokładnie dowodzi? To jest lista?Ponieważ to pytanie przyciągnęło wiele uwagi i istnieje kilka sposobów spełnienia twojego zadania, przedstawię kilka opcji.
Nawiasem mówiąc, to wszystko jedno-liniowe;)
Począwszy od:
Przegląd potencjalnych operacji:
kod:
jak wskazano w cs95, inne metody powinny być preferowane nad
.values
atrybutem pandy z pandy w wersji 0.24, patrz tutaj . Używam go tutaj, ponieważ większość osób (do 2019 r.) Nadal będzie miała starszą wersję, która nie obsługuje nowych zaleceń. Możesz sprawdzić swoją wersję za pomocąprint(pd.__version__)
źródło
Jeśli twoja kolumna będzie miała tylko jedną wartość, coś takiego
pd.series.tolist()
spowoduje błąd. Aby zagwarantować, że będzie działać we wszystkich przypadkach, użyj poniższego kodu:źródło
Zakładając, że nazwa ramki danych po przeczytaniu arkusza programu Excel to
df
: weź pustą listę (np.dataList
), Iteruj przez ramkę danych wiersz po wierszu i dołącz do pustej listy, np.Lub,
Nie, jeśli wydrukujesz
dataList
, otrzymasz każdy wiersz jako listę wdataList
.źródło
lower_case_with_underscores
stylem. Jaką przewagę ma to rozwiązanie nad istniejącymi? Poza tym naprawdę odradzam korzystanie z dostępu w stylu atrybutów w Series i DataFrames.źródło