Mam paczkę datagraf pandy utworzoną z pliku csv. Jedna kolumna tej ramki danych zawiera dane liczbowe, które początkowo są przesyłane jako ciąg. Większość wpisów ma charakter numeryczny, ale niektóre zawierają różne kody błędów, które nie są numeryczne. Nie wiem z góry, jakie mogą być wszystkie kody błędów lub ile ich jest. Tak więc, na przykład, dataframe może wyglądać następująco:Czy istnieje metoda, aby pominąć nieprzyłączalne wiersze podczas rzucania serii pand z str do float?
[In 1]: df
[Out 1]:
data OtherAttr
MyIndex
0 1.4 aaa
1 error1 foo
2 2.2 bar
3 0.8 bar
4 xxx bbb
...
743733 BadData ccc
743734 7.1 foo
chcę rzucać df.data
jako pływaka i wyrzucić wszystkie wartości, które nie przekształcają prawidłowo. Czy jest w tym wbudowana funkcja? Coś jak:
df.data = df.data.astype(float, skipbad = True)
(choć wiem, że specjalnie nie będzie działać i nie widzę żadnych kwargs ciągu astype że robić to, co chcę)
Chyba mogę napisać funkcję, a następnie przy użyciu try
używaj pandy apply
lub map
, ale to wydaje się być nieeleganckim rozwiązaniem. To musi być dość powszechny problem, prawda?
Dzięki za odpowiedź, właśnie tego szukałem. Jeden mniejszy punkt kontrolny: jeśli masz już mieszankę typów już w kolumnie (niektóre zmiennoprzecinkowe, niektóre ciągi znaków), to 'convert_objects' zakończy się bezgłośnie. Oczywiście rozsądną odpowiedzią na to jest "nie mieszaj typów obiektów w jednej kolumnie!" – user2543645
_ "FutureWarning: convert_objects jest przestarzałe. Użyj konwerterów danych typ danych pd.to_datetime, pd.to_timedelta i pd.to_numeric." _ – xtian