Python3: как сохранить ведущий ноль при экспорте фрейма данных в CSV или текстовый файл - PullRequest
0 голосов
/ 15 октября 2019

Я использую следующую команду: (python3)

Mydataframe__df.to_csv(string_io, sep=',', quoting=csv.QUOTE_ALL, header=True, index=False , encoding='utf-8')
df_writer = Mydata_Output.get_writer('/MYFILE_TEST.csv')
df_string = string_io.getvalue()

# save the string as bytes to with the writer
df_writer.write(df_string.encode('utf-8'))

# close the writer connection
df_writer.close()

проблема заключается в столбцах с форматом, подобным «012345», ведущий 0 удаляется в выходном файле даже при открытии его с помощьюБлокнот и даже когда формат столбца установлен как строка в кадре данных.

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Проблема с ведением 0 заключается в том, что когда мы загружаем фрейм данных в panda, прежде чем писать csv, тогда panda по умолчанию определяет свой собственный тип данных. .Get_dataframe (infer_with_pandas = False) заставляет сохранять исходный фрейм данных. Проблема заключается в том, что когда у нас есть нули в данных (кроме строковых данных), panda это не нравится, поэтому нам нужно все переделать в строку или очистить данные раньше .... В найденном .get_dataframe (infer_with_pandas = False)в одной публикации здесь. Я постараюсь сослаться на это позже.

# Read recipe inputs
Mydataframe = dataiku.Dataset("TESTING_for_leading0")
Mydataframe_df = Mydataframe.get_dataframe(infer_with_pandas=False)

Mydataframe_df.to_csv(string_io, sep=',', quoting=csv.QUOTE_ALL, header=True, index=False , encoding='utf-8')
df_writer = Mydata_Output.get_writer('/MYFILE_TEST.csv')
df_string = string_io.getvalue()

# save the string as bytes to with the writer
df_writer.write(df_string.encode('utf-8'))

# close the writer connection
df_writer.close()
0 голосов
/ 15 октября 2019

Я тоже новичок здесь, поэтому здесь не нужно указывать название улицы.

Вы можете сохранить начальные нули, преобразовав строку в строку перед выводом данных. Допустим, например, что вы хотите иметь восемь цифр в столбцах данных, вы можете использовать zfill, чтобы заполнить строку нулями слева, чтобы она была длиной восемь цифр.

outvar = str(numvar).zfill(8)
...