Pandas записывает данные в файл CSV

У меня есть dataframe в пандах, которые я хотел бы записать в CSV-файл. Я делаю это, используя:

df.to_csv('out.csv') 

И получение ошибки:

 UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128) 

Есть ли способ обойти это легко (т.е. у меня есть символы Юникода в моем кадре данных)? И есть ли способ записать в файл с разделителями табуляции вместо CSV, используя, например, метод «to-tab» (который, как я думаю, не существует)?

5 Solutions collect form web for “Pandas записывает данные в файл CSV”

Чтобы разграничить вкладку, вы можете использовать аргумент sep для to_csv :

 df.to_csv(file_name, sep='\t') 

Чтобы использовать конкретную кодировку (например, «utf-8»), используйте аргумент encoding :

 df.to_csv(file_name, sep='\t', encoding='utf-8') 

Иногда вы сталкиваетесь с этими проблемами, если вы также укажете кодировку UTF-8. Я рекомендую вам указывать кодировку во время чтения файла и того же кодирования во время записи в файл. Это может решить вашу проблему.

Что-то еще вы можете попробовать, если у вас проблемы с кодировкой на «utf-8» и вы хотите перейти по ячейке по ячейке, вы можете попробовать следующее.

(Где «df» – ваш объект DataFrame.)

 for column in df.columns: for idx in df[column].index: x = df.get_value(idx,column) try: x = unicode(x.encode('utf-8','ignore'),errors ='ignore') if type(x) == unicode else unicode(str(x),errors='ignore') df.set_value(idx,column,x) except Exception: print 'encoding error: {0} {1}'.format(idx,column) df.set_value(idx,column,'') continue 

Затем попробуйте:

 df.to_csv(file_name) 

Вы можете проверить кодировку столбцов:

 for column in df.columns: print '{0} {1}'.format(str(type(df[column][0])),str(column)) 

Предупреждение: errors = 'ignore' просто опустит символ, например

 IN: unicode('Regenexx\xae',errors='ignore') OUT: u'Regenexx' 

Я хотел бы добавить кое-что к тому, что уже упоминал Энди Хейден в его точном ответе. Когда вы храните объект DataFrame в файл csv с to_csv метода to_csv , вам, вероятно, не нужно будет хранить предыдущие индексы каждой строки объекта DataFrame .

Вы можете избежать этого, передав False логическое значение для index параметра.

Скорее всего:

 df.to_csv(file_name, encoding='utf-8', index=False) 

Поэтому, если ваш объект DataFrame выглядит примерно так:

  Color Number 0 red 22 1 blue 10 

Файл csv будет хранить:

 Color,Number red,22 blue,10 

вместо (в случае, когда значение True было передано по умолчанию )

 ,Color,Number 0,red,22 1,blue,10 

Нашел это, чтобы поделиться, Cheers! 🙂

df.to_csv ('out.csv', sep = ',')

Он будет работать определенно, измените «df» на ваше имя фрейма данных и запустите (используйте anaconda idle)

  • Могу ли я анализировать даты в разных форматах?
  • как использовать функцию dataframe между_time ()
  • Pandas min () выбранных строк и столбцов
  • Как GroupBy Dataframe в пандах и сохранить столбцы
  • Можно ли заставить панды не преобразовывать тип данных при использовании DataFrame.replace
  • Условная логика в Pandas DataFrame
  • Ошибка при попытке применить метод журнала к столбцу фрейма данных pandas в Python
  • Строки, специфичные для блока данных панд
  • Python - лучший язык программирования в мире.