Панды read_csv неправильно разбирают строки - PullRequest
0 голосов
/ 09 мая 2018

У меня возникли проблемы при попытке прочитать CSV-файл и правильно проанализировать его с Python 2.7 с помощью панд.

Некоторые строки, которые терпят неудачу:

Europa, 2018-04-20,26948,15, Destino, -, CRU-159617-JUN-2018, Origen, Productos incidos, https://s3.amazonaws.com/cruceros-host/home/host-Cruceros.jpg,Crucero,06,https://www.host.com/cruceros/listado?regionId=7&startDate=2018-06-01&endDate=2018-07-01&adults=2&children=0&childrenAges=,23433,"Espana, Francia, Italia, Malta "

Австралазия, 2018-05-01,39155,15, Destino, -, CRU-180907-JAN-2019, Origen, Productos incidos, https://s3.amazonaws.com/cruceros-host/home/host-Cruceros.jpg,Crucero,01," https://www.host.com/cruceros/listado?regionId=14&startDate=2019-01-01&endDate=2019-02-01&adults=2&children=0&childrenAges=&startPort=Sydney, Австралия ", 34048," Новая Зеландия "

код:

frame = pd.read_csv(filepath_or_buffer=raw_file)

- Изменить:

Проблема, которую я получаю, состоит в том, что я верну один столбец со строкой отверстия.

- Edit2:

Проблема заключалась в том, что Excel отредактировал некоторые строки случайно и добавил "в и и в некоторых строках. Теперь он работает правильно.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Кажется, вы не используете разделитель. Попробуйте с этим:

pd.read_csv(filepath_or_buffer=raw_file, sep=r',')
0 голосов
/ 09 мая 2018

pandas.Series.str и применить функцию

import pandas as pd

df = pd.DataFrame({'a':[r'Europa,2018-04-20,26948,15,Destino,-,CRU-159617-JUN-2018,Origen,Productos incluidos,https://s3.amazonaws.com/cruceros-host/home/host-Cruceros.jpg,Crucero,06,https://www.host.com/cruceros/listado?regionId=7&startDate=2018-06-01&endDate=2018-07-01&adults=2&children=0&childrenAges=,23433,"Espana, Francia, Italia, Malta"',
                        r'Australasia,2018-05-01,39155,15,Destino,-,CRU-180907-JAN-2019,Origen,Productos incluidos,https://s3.amazonaws.com/cruceros-host/home/host-Cruceros.jpg,Crucero,01,"https://www.host.com/cruceros/listado?regionId=14&startDate=2019-01-01&endDate=2019-02-01&adults=2&children=0&childrenAges=&startPort=Sydney, Australia",34048,"Nueva Zelanda "']})

df.a = df.a.str.split(',')
for i in range(9):
    df['Col {0}'.format(i)]=df.a.apply(lambda x: x[i])

df['Col 10'] = df.a.apply(lambda x: ','.join(x[9:]))

Выход:

Output

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