Python / Pandas to_csv, сохраняющий как NoneType и вызывающий TypeError - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать инструмент загрузки, который берет файл .xls, а затем преобразует его в фрейм данных pandas, прежде чем окончательно сохранить его как файл csv для обработки и анализа.После того, как файл выходит из этого кода:

    def xls_to_csv(data):
        #Formats into pandas dataframe. Index removes first column of .xls file.
        formatted_file = pd.read_excel(data, index_col=0)
        #Converts the formatted file into a csv file and saves it.
        final_file = formatted_file.to_csv('out.csv')

Он сохраняется правильно и в нужном месте, однако, когда я пытаюсь подключить полученный файл к другим функциям, содержащим циклы, я вызываю ошибку TypeError: 'NoneType'объект не повторяется.

Файл сохранен как' out.csv ', и я могу открыть его вручную, однако команда open даже не будет работать без этой ошибки.

Использование Python 3.6!

Спасибо заранее!

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Pandas to_csv функция сохраняет файл, но ничего не возвращает.Чтобы зациклить файл csv позже, вам придется изменить код так, чтобы он выглядел следующим образом.

formatted_file.to_csv('out.csv')
final_file = open('out.csv', 'r')
0 голосов
/ 01 июня 2018
def xls_to_csv(data):

    # Read the excel file as a dataframe object
    formatted_dataframe = pd.read_excel(data, index_col=0)

    # Save the dataframe to a csv file in disk. The method returns None.
    formatted_file.to_csv('out.csv')

    # The dataframe object is still here
    final_dataframe = formatted_dataframe

    # The final file NAME
    final_filename = 'out.csv'

Ваши имена переменных вводят в заблуждение

  • Ваш formatted_file на самом деле является объектом фрейма данных
  • Ваш final_file: для меня неясно, хотите ли выfilename или the dataframe.
0 голосов
/ 01 июня 2018

to_csv возвращает None, поэтому вы получили эту ошибку для поддержки formatted_file, вы можете попробовать это,

final_file=formatted_file.copy()

или

final_file=pd.read_csv('out.csv')
...