Quando si seleziona una singola colonna da un DataFrame panda (ad esempio df.iloc[:, 0]
, df['A']
o df.A
, ecc.), Il vettore risultante viene automaticamente convertito in una Serie anziché in una singola colonna dataframe. Tuttavia, sto scrivendo alcune funzioni che prendono un DataFrame come argomento di input. Pertanto, preferisco trattare DataFrame a colonna singola invece di Serie in modo che la funzione possa assumere che df.columns sia accessibile. In questo momento devo convertire esplicitamente la serie in un DataFrame usando qualcosa come pd.DataFrame(df.iloc[:, 0])
. Questo non sembra il metodo più pulito. Esiste un modo più elegante di indicizzare direttamente da un DataFrame in modo che il risultato sia un DataFrame a colonna singola invece di Serie?Panda Python: mantenere la colonna selezionata come DataFrame invece di Serie
risposta
Come @Jeff menzioni ci sono alcuni modi per fare questo, ma mi consiglia di utilizzare loc/iLOC essere più espliciti (e sollevare gli errori presto se il vostro cercando qualcosa di ambiguo):
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
Gli ultimi due le scelte rimuovono l'ambiguità nel caso di nomi di colonne intere (precisamente perché sono stati creati loc/iloc). Ad esempio:
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
Mi dispiace disturbarla, ma solo una domanda molto veloce su questo. Vedo che l'extra '[]' rende il risultato un 'DataFrame' invece di un' Series', ma dove nei documenti panda è discusso questo tipo di sintassi di indicizzazione? Sto solo cercando di ottenere il nome "ufficiale" per questa tecnica di indicizzazione in modo che io lo capisca davvero. Grazie! –
@sparc_spread http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics "Puoi passare un elenco di colonne a [] per selezionare le colonne in questo ordine." Non sono sicuro che questo abbia un nome! –
Sì, sembra che non ce l'abbia, ma continuerò a usarlo da ora. Incredibile quanta roba è sepolta sia nell'API che nei documenti. Grazie! –
- 1. Come ottenere la prima colonna di un DataFrame panda come una serie?
- 2. Come mantenere una colonna di dataframe come dataframe
- 3. Python Panda 'applica' ritorna serie; non posso convertire in dataframe
- 4. panda dataframe rimuovi colonna costante
- 5. serie temporali marittime da panda dataframe
- 6. come fare 1 per n dataframe da serie in panda?
- 7. Panda Python - Data Colonna Indice indice
- 8. Python: ridurre la precisione panda timestamp dataframe
- 9. Python: Pandas dataframe dalla serie di dict
- 10. Come generare la colonna DataFrame dei pandi di Categorical dalla colonna di stringhe?
- 11. panda python - dividendo colonna da un'altra colonna
- 12. Nessun nome di colonna in python panda
- 13. nome colonna dataframe panda: rimuovere special charater
- 14. Ottieni righe particolari come serie da dataframe panda
- 15. mediana di panda dataframe
- 16. Espandere colonna dataframe panda in più righe
- 17. Creazione di un dataframe in panda moltiplicando due serie insieme
- 18. Panda: come sbarazzarsi di `Innominato:` colonna in un dataframe
- 19. Matrix Moltiplicazione di una Panda dataframe e Serie
- 20. Aggiungere la colonna indicizzata a DataFrame con i panda
- 21. Tronca `TimeStamp` colonna per la precisione ora in panda` DataFrame`
- 22. Panda Python: aggiungi la colonna al DataFrame raggruppato con il metodo di concatenamento
- 23. Ordinamento personalizzato in dataframe panda
- 24. Ordinamento panda Python per multiindice e colonna
- 25. binning un dataframe in panda in Python
- 26. Come impostare dtypes per colonna in panda DataFrame
- 27. python panda rank per colonna
- 28. come ordinare i panda dataframe da una colonna
- 29. Importa colonna dataframe panda come stringa non int
- 30. scegliere tra i panda dataframe utilizzando booleano serie/array
df.iloc [:, [0]] o df [['A']]; df.A restituirà solo una serie tuttavia – Jeff