rzutowanie do int

0

Witam,
Mam problem z konwersją do int.
Wczytuję dane z excela
a = row[11] # tu jest jedna liczba
b = int(a) #<- tu wywala błąd
c = c + b

b = int(a)
ValueError: invalid literal for int() with base 10:

Domyślam się że row[11] jest traktowany jako string. Dlaczego nie udaje mi się tego zamienić na int?

0

Na oko to masz tam pustego stringa i robisz int("")

0

To jak to zrobić poprawnie?

0

Zobacz co tam jest.

0
print(row[11], type(row[11]))

Po tym co ci wyświetli jako wynik będzie wiadomo z czym mamy doczynienia :).
Chyba że przeniosłeś nawyk z innego języka programowania, np. C/Java i te row nie jest jedenastym elementem string'a bądź jakiegoś zbioru indeksowanego ;p

0
Guaz napisał(a):
print(row[11], type(row[11]))

Po tym co ci wyświetli jako wynik będzie wiadomo z czym mamy doczynienia :).
Chyba że przeniosłeś nawyk z innego języka programowania, np. C/Java i te row nie jest jedenastym elementem string'a bądź jakiegoś zbioru indeksowanego ;p

Dzięki, przegapiłem że w 1 wierszu są ich nazwy, a dopiero w kolejnych liczby...

1

Nie wiem, co konkretnie chcesz osiągnąć obrabiając te dane z excela, ale nie wygodniej byłoby Ci korzystać z np. Pandas? Wsparcie dla plików Excela jest, można śmiało wciągać i obrabiać ;)

Np zrzutowanie całej kolumny do typu liczbowego wyglądałoby mniej więcej tak:

prices_numeric = pandas.to_numeric(df["price"], errors="coerce") # dostajesz Series, błędne do NaN

df["price"] = pandas.to_numeric(df["price"], errors="ignore"]) # przypisujesz do kolumny, błędne wartości pozostaną niezmienione

Nie mówiąc o tym, że mógłbyś operować na nazwach kolumn, a nie ich indeksach które jak sam miałeś okazję się przekonać czasami się człowiekowi mieszają ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1