Pandas - проблема с преобразованием столбца в int после чтения csv - PullRequest
0 голосов
/ 18 января 2020

Я импортирую CSV-файл, который я ранее удалил с сайта inte rnet. Это примеры строк из этого файла:

год, выборы, teryt_code, повята, гмина, polit_party, n_votes, процент 2011, сейм, 020101, болеславецкий, Миасто Болеслав iec, Листа номер 1 - Komitet Wyborczy Prawo i Sprawiedliwość - Zarejestrowana, 3 496, "22,85" 2011, сейм, 020101, Болеславецкий, Място Болеслав iec, Листа 2 - Komitet Wyborczy Polska Jestjjjjjjjjjjjjjj s row j,, 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 "1,80" 2011, Сейм, 020101, Болеславецкий, Място Болеслав iec, Лист № 3 - Komitet Wyborczy Sojusz Lewicy Demokratycznej - Zarejestrowana, 1 815, "11,86" 2011, Сейм, 020101, Болес Миасто Болеслав iec, Лист № 4 - Komitet Wyborczy Ruch Palikota - Zarejestrowana, 1 867, "12,20" 2011, сейм, 020101, Болеславецкий, Миасто Болеслав iec, Лист № 5 - Комитет Wyborczy Polsk ie Stronnictwo Ludowe - Zarejestrowana, 432, "2,82" 2011, sejm, 020101, Болеславецкий, Място Болеслав iec, Лист № 6 - Komitet Wyborczy Polska Partia Pracyro - Sierp wana, 79, "0,52" 2011, sejm, 020101, bolesławiecki, Miasto Bolesław iec, Lista № 7 - Komitet Wyborczy Platforma Obywatelska RP - Zarejestrowana, 7 336, "47,94" 2011, sejm, 020102, Болеславецкий, Гмина Болеслав iec, Лист № 1 - Комитет Выборов Право и Справиедлиув - Zarejestrowana, 1 043, "26,33" 2011, Сейм, 020102, Болеславецкий, Гмина Болеслав * 10, 10 * 10 * 10 Лист № 2 - Komitet Wyborczy Polska Jest Najważniejsza - Zarejestrowana, 68, "1,72" 2011, sejm, 020102, Болеславецкий, Гмина Болеслав iec, Лист № 3 - Komitest Wyborczy Sojowcz Zowjowjowjowyjowyjowyjowyjowy 36 - Wyjowze 36 icy row icy icy icy icy 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 3 K 2 Lis 3 2 Lis 36 36 2 36 36 36 36 3 «9,29»

Когда я импортирую его со строкой:

sejm_df = pandas.read_csv('file.csv',encoding='utf-8-sig')

, а затем распечатываю со строкой:

print(sejm_df[0:10].to_string())

Строки печатаются:

год выборов teryt_code powiat gmina polit_party n_votes процент 0 2011 сейм 20101 bolesławiecki Miasto Bolesław iec Лист № 1 - Komitet Wyborczy Prawo i Sprawied ... 3 496 22,85 1 2011 сейм 20101 болеславецкий Място Болеслав * 1 052 *c Лист № 2 - Komitet Wyborczy Polska Jest Najw ... 276 1,80 2 2011 sejm 20101 bolesławiecki Miasto Bolesław iec Лист № 3 - Komitet Wyborczy Sojusz Lewicy De ... 1 815 11, 86 3 2011 sejm 20101 bolesławiecki Miasto Bolesław iec Лист № 4 - Komitet Wyborczy Ruch Palikota - ... 1 867 12,20 4 2011 sejm 20101 bolesławiecki Miasto Болеслав iec Lista nr 5 - Комитеты Polsk ie Stronni c ... 432 2,82 5 2011 sejm 20101 bolesławiecki Miasto Bolesław iec Lista nr 6 - Komitet Wyborczy Polska Partia Pr ... 79 0,52 6 2011 sejm 20101 bolesławiecki Miasto Болеслав iec Лист № 7 - Komitet Wyborczy Platforma Obywat ... 7 336 47,94 7 2011 sejm 20102 bolesławiecki Гмина Болеслав iec Лист № 1 - Komitet Wyborczy Prawo i Sprawied ... 1 043 26,33 8 2011 год 20102 bolesławiecki Гмина Болеслав iec Лист № 2 - Komitet Wyborczy Polska Jest Najw ... 68 1,72 9 2011 год 20102 bolesławiecki Гмина Болеслав iec Листа № 3 - Komitet Wyborczy Sojusz Lewicy De ... 368 9,29

Но мне нужно преобразовать столбец n_votes в целое число. Я пытаюсь сделать это:

sejm_df['n_votes'] = sejm_df['n_votes'].astype('int',True)

Но появляется только ошибка:

ValueError: недопустимый литерал для int () с основанием 10: '3 \ xa0496'

1 Ответ

0 голосов
/ 18 января 2020

На самом деле вы пытаетесь преобразовать '3 496' в 3496, что невозможно сделать без обработки пространства без перерывов, то есть '\ xa0'. Сначала вы можете убрать пробел из этого столбца, например:

df['n_votes'] = df['n_votes'].str.strip()

После этого вы сможете выполнить целочисленное преобразование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...