#pandas #csv
#pandas #csv
Вопрос:
У меня возникли проблемы при обработке файла csv в таком формате :
«Идентификатор заказа», «Статус заказа», «Дата заказа», «Адрес», «Всего»
«10000», «Доставлено»,»07/10/2020 05:44″, » Перед «МИНИМАРКЕТОМ СУПЕРМЕНА» затем поверните направо», «10.0000»
Если я делаю: pd.read_csv(file.csv, sep = ',')
результат
Ошибка токенизации данных. Ошибка C: ожидалось 4 поля в строке 1, увидел 10
Проблема возникает, когда у меня есть двойные кавычки внутри строки в столбце адреса, например «МИНИМАРКЕТ СУПЕРМЕНА» с двойными кавычками внутри значения адреса = «Перед «МИНИМАРКЕТОМ СУПЕРМЕНА», затем поверните направо»
Любой совет о том, как прочитать этот файл csv?
Комментарии:
1. попробуйте без
sep = ','
и укажите полное имя файла, включая расширение, что-то вродеfile.csv
2. Извините за неясность, я отредактировал вопрос и указал, что проблема заключается в двойных кавычках внутри строковых значений в файлах csv. Спасибо
Ответ №1:
CSV, благослови их души, могут быть изворотливыми. Попробуйте, если это сработает — используя ваш путь к файлу вместо StringIO(s)
:
from io import StringIO
import csv
s="""
"Order ID","Order Status","Order Date","Address","Total"
"10000","Delivered","07/10/2020 05:44","In front of "SUPERMAN MINIMARKET" then turn right","10.0000"
"""
df = pd.read_csv(StringIO(s),
sep=',',
quoting=csv.QUOTE_ALL,
quotechar='"'
)
# Order ID Order Status Order Date
# 0 10000 Delivered 07/10/2020 05:44
#
# Address Total
# 0 In front of SUPERMAN MINIMARKET" then turn right" 10.0
Комментарии:
1. Спасибо, это работает так, как я хочу, но теперь я столкнулся с более серьезной проблемой. Когда регистр адресов превращается в «Перед МИНИМАРКЕТОМ «СУПЕРМЕН», затем поверните направо, Сент-Антонио-роуд, Вашингтон, округ Колумбия, США», оказывается, результат не такой, как я ожидал. Можете ли вы помочь мне в этом?
2. Какую ошибку вы получаете? Вы должны иметь возможность иметь запятые в строке, заключенной в кавычки (определяется
quotechar
и эти запятые игнорируются, если они являются разделителем.