Gdy wybranie jednej kolumny z DataFrame PANDAS (powiedzmy df.iloc[:, 0]
, df['A']
lub df.A
itp), otrzymany wektor jest automatycznie przekształca się w serii, a nie z pojedynczej kolumny Ramka danych. Jednakże piszę niektóre funkcje, które pobierają DataFrame jako argument wejściowy. Dlatego wolę radzić sobie z jedną kolumną DataFrame zamiast z Serii, aby funkcja mogła przyjąć, że df.columns jest dostępny. Teraz muszę jawnie przekonwertować serię na DataFrame, używając czegoś takiego jak pd.DataFrame(df.iloc[:, 0])
. To nie wydaje się być najbardziej czystą metodą. Czy istnieje bardziej elegancki sposób indeksowania bezpośrednio z DataFrame, tak aby wynik był jednokolumnowy DataFrame zamiast Series?Python pandy Przechowywać wybrany kolumnę jako DataFrame zamiast serii
Odpowiedz
Jak @Jeff wspomina istnieje kilka sposobów, aby to zrobić, ale zalecamy stosowanie LOC/iloc być bardziej wyraźny (i podnieść błędów na początku, jeśli próbujesz coś dwuznacznego):
In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
In [11]: df
Out[11]:
A B
0 1 2
1 3 4
In [12]: df[['A']]
In [13]: df[[0]]
In [14]: df.loc[:, ['A']]
In [15]: df.iloc[:, [0]]
Out[12-15]: # they all return the same thing:
A
0 1
1 3
dwa ostatnie wybory usuwają niejednoznaczność w przypadku nazw całkowitych kolumn (właśnie dlaczego zostały utworzone loc/iloc). Na przykład:
In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0])
In [17]: df
Out[17]:
A 0
0 1 2
1 3 4
In [18]: df[[0]] # ambiguous
Out[18]:
A
0 1
1 3
Przepraszam, że przeszkadzam, ale po prostu bardzo szybkie pytanie wokół tego. Widzę, że dodatkowe '[]' sprawia, że wynik jest 'DataFrame' zamiast' Series', ale gdzie w dokumentacji pandy jest omawiana tego rodzaju składnia indeksująca? Po prostu próbuję uzyskać "oficjalną" nazwę tej techniki indeksowania, tak, że naprawdę to rozumiem. Dzięki! –
@sparc_spread http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics "Możesz przekazać listę kolumn do [], aby wybrać kolumny w tej kolejności." Nie jestem pewien, czy ma to imię! –
Tak, wygląda na to, że go nie ma - ale będę go używał od teraz. Niesamowite, ile rzeczy jest pochowanych w API i dokumentach. Dzięki! –
- 1. Dołączanie listy lub serii do pandy DataFrame jako wiersza?
- 2. python pandy dataframe utworzyć nową kolumnę z innych kolumn komórek
- 3. Utwórz kolumnę dzień-of-tydzień w dataframe pandy używając Python
- 4. Python pandy: Dodaj kolumnę do mojego dataframe że liczy zmienny
- 5. Pandy: Tworzenie zbiorczy kolumnę w DataFrame
- 6. Jak wygenerować kolumnę DataFrame pandy klasy Categorical z kolumny łańcucha?
- 7. Rozwiń pandy kolumnę DataFrame w wielu wierszach
- 8. Jak uzyskać pierwszą kolumnę pandas DataFrame jako serię?
- 9. Konwertuj kolumnę Pandy na DataTime
- 10. Dodaj kolumnę do końca Pandy DataFrame zawierającej średnio poprzednimi danymi
- 11. Jak ustawić dtypes przez kolumnę w Pandy DataFrame
- 12. Pandy zresetować indeks serii usunąć multiindex
- 13. Python Pandy konwertować obiekt GroupBy do DataFrame
- 14. python, najlepszym sposobem konwersji serię pandy w dataframe pandy
- 15. pandy - Przechowywać wyłącznie prawdziwych wartości po GroupBy w DataFrame
- 16. przypisanie nazwy kolumn z serii pandy
- 17. Drop NaNs z pandy dataFrame
- 18. Python Pandy: Konwersja wierszy jako nagłówki kolumn
- 19. dzielona pandy dataframe podstawie GroupBy
- 20. Concating pandy dataframe
- 21. mediana pandy dataframe
- 22. Jak obracać pandy dataframe
- 23. Turn pandy DataFrame strun na histogramie
- 24. Konwersja pandy dataframe do dask dataframe
- 25. kwantyle pandy w serii zawierającej nieskończoność?
- 26. jak zresetować wskaźnik pandy dataframe po dropna() Pandy dataframe
- 27. Pandy dla Pythona usuwają duplikaty w serii
- 28. Pandy hierarchiczna dataframe
- 29. pandy DataFrame problem
- 30. pandy krojenie multiindex dataframe
df.iloc [,, [0]] lub df [["A"]]; df.A tylko zwróci serię jednak – Jeff