Ho un dataframe panda. Una delle mie colonne dovrebbe essere solo float. Quando provo a convertire quella colonna in float, sono avvisato che ci sono delle stringhe. Vorrei eliminare tutte le righe in cui i valori in questa colonna sono stringhe ...Rimuovi righe in cui il tipo di valore di colonna è stringa Pandas
6
A
risposta
10
Usa convert_objects
con param convert_numeric=True
questo sarà costringere tutti i valori non numerici per NaN
:
In [24]:
df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]})
df
Out[24]:
a
0 0.1
1 0.5
2 jasdh
3 9
In [27]:
df.convert_objects(convert_numeric=True)
Out[27]:
a
0 0.1
1 0.5
2 NaN
3 9.0
In [29]:
si può poi rilasciarli:
df.convert_objects(convert_numeric=True).dropna()
Out[29]:
a
0 0.1
1 0.5
3 9.0
UPDATE
Dalla versione 0.17.0
questo il metodo è ora deprecated e tu hai bisogno di t o utilizzare to_numeric
purtroppo questo opera su un Series
piuttosto che un intero df modo che il codice equivalente è ora:
df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna()
0
È possibile trovare il tipo di dati di una colonna dall'attributo dtype.kind
. Qualcosa come df[col].dtype.kind
. Vedi the numpy docs per maggiori dettagli. Trasporre il dataframe per passare da indici a colonne.
Problemi correlati
- 1. Come selezionare le righe in cui il valore di una colonna inizia con una determinata stringa?
- 2. Ottieni il nome della colonna in cui il valore è qualcosa in pandas dataframe
- 3. Rimuovi righe di zeri da una serie di Pandas
- 4. SQL selezionando le righe in cui il valore di una colonna è comune in un'altra colonna criteri
- 5. MySQL: selezionare le righe in cui una colonna è nullo
- 6. Selezionare le righe in cui il valore della colonna è cambiato
- 7. Mysql: come interrogare una colonna il cui tipo è bit?
- 8. Selezione di righe in cui una colonna ha una stringa come "hsa .." (corrispondenza stringa parziale)
- 9. In SQL, come ottengo tutte le righe in cui il valore di una colonna è il più basso nella tabella?
- 10. l'importazione pandas read_csv fornisce il tipo misto per una colonna
- 11. Somma in cui il valore è x
- 12. Pandas split DataFrame per il valore di colonna
- 13. pandas to_csv prima colonna in più rimuovi, come?
- 14. Converti colonna di Pandas in DateTime
- 15. replicatori righe data.table di valore colonna
- 16. Rimuovi righe da un frame di dati a colonna singola
- 17. Mysql: trova le righe in cui il valore della colonna termina con una sottostringa specifica
- 18. Replica di righe in un frame di dati panda con un valore di colonna
- 19. Rimuovi duplicati in base al valore della colonna-linq
- 20. Pandas - Python, eliminazione delle righe in base alla colonna Data
- 21. Un dizionario in cui il valore è un tipo anonimo in C#
- 22. Rimuovi righe duplicate
- 23. Pandas colonna datetime di ordinale
- 24. Concatenazione colonna Pandas DataFrame
- 25. LINQ Rimuovi elemento dalla matrice di oggetti in cui la proprietà è uguale valore
- 26. seleziona solo le righe se il suo valore in una particolare colonna è inferiore al suo valore nell'altra colonna
- 27. colonna mappa Pandas in posizione
- 28. Somma di righe in base al valore della colonna
- 29. funzione che restituisce un tipo generico il cui valore è noto solo in fase di esecuzione
- 30. Rimuovi righe in dataframe con fattore ""
Grazie per questo! Il mio dataframe ha più colonne. Alcune colonne devono avere stringhe. Ad esempio, ho una colonna "nome" e una colonna "età". La colonna "età" deve essere numerica. Ho provato: df.age.convert_objects (convert_numeric = True) e ottenuto l'oggetto 'Series' non ha attributo 'convert_objects'. – user3347713
È necessario eseguire 'df [['età']]. Convert_objects (convert_numeric = True)' in questo caso – EdChum
Oh capisco, quindi [['età']] seleziona una colonna in df. Molto utile. Tuttavia, sto ottenendo un TypeError: convert_objects() ha ottenuto un argomento di parole chiave inaspettato 'convert_numeric. Ho appena controllato la documentazione e 'convert_numeric = True' è l'argomento corretto. Pensieri? – user3347713