vasokir Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 Καλησπέρα, έχω ένα dataframe (τύπου object) και θέλω να πετάξω κάποιες τεράστιες τιμές που έχει (πχ 5.000.000) γιατί μου βγάζει error και δεν μου τα μετατρέπει σε float. Προσπάθησα να συγκρίνω df=df[df['column']<'5000'] αλλά μου βγάζει σφάλμα ότι δεν υποστηρίζεται το '<',υποθέτω υπάρχει διαφορετικός τρόπος σύγκρισης μεταξύ objects. Καμιά ιδεά;
georgemarios Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 Οι τιμές του column είναι σε μορφή string? Θα πρέπει να τις μετατρέψεις σε float πριν πας να κάνεις τη σύγκριση df['column'] = df['column'].astype(float) ύστερα θα πρεπει να συγκρινεις όπως το κανεις αλλα το 5000 να το βαλεις χωρις εισαγωγικα 1
vasokir Δημοσ. 26 Ιανουαρίου 2021 Μέλος Δημοσ. 26 Ιανουαρίου 2021 Ουσιαστικά το θέμα που έχω είναι αυτό...Θέλω να κάνω float όλη τη στήλη αλλά μου βγάζει αυτό: could not convert string to float: '9.544.000.000.000.000' γι αυτό σκέφτηκα να εντοπίσω όλες τις μεγάλες τιμές και να τις πετάξω,αφού είναι ελάχιστες σε σχέση με το μέγεθος του dataset που έχω.
georgemarios Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 σε αυτή τη περίπτωση, φιλτραρε τις τιμες βασει του μήκους του string, και μετα το μετατρεπεις σε νουμερα Ενδεικτικά df['column'].str.len() < 6 2
vasokir Δημοσ. 26 Ιανουαρίου 2021 Μέλος Δημοσ. 26 Ιανουαρίου 2021 6 λεπτά πριν, georgemarios είπε σε αυτή τη περίπτωση, φιλτραρε τις τιμες βασει του μήκους του string, και μετα το μετατρεπεις σε νουμερα Ενδεικτικά df['column'].str.len() < 6 Τέλεια,δεν το είχα σκεφτεί! Σ ευχαριστώ πολύ!!!
georgemarios Δημοσ. 26 Ιανουαρίου 2021 Δημοσ. 26 Ιανουαρίου 2021 Επίσης, όπως βλέπω ο αριθμός σου εχει τελειες, δε ξερω αν παιζει καποιο μπερδεμα καιτ ο pandas τα θεωρει multiple decimal points Οποτε δοκιμασε απλα να τα αφαιρεσεις απο το string πριν τη μετατροπη df['column'].str.replace('\.','').astype(int) 1
vasokir Δημοσ. 26 Ιανουαρίου 2021 Μέλος Δημοσ. 26 Ιανουαρίου 2021 1 λεπτό πριν, georgemarios είπε Επίσης, όπως βλέπω ο αριθμός σου εχει τελειες, δε ξερω αν παιζει καποιο μπερδεμα καιτ ο pandas τα θεωρει multiple decimal points Οποτε δοκιμασε απλα να τα αφαιρεσεις απο το string πριν τη μετατροπη df['column'].str.replace('\.','').astype(int) Το σκέφτηκα αυτό, βέβαια δούλεψε αυτό που μου είπες πριν, και επειδή δεν προλαβαίνω το αφήνω έτσι, έτσι κι αλλιώς πρόκειται για data entry errors λογικά...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα