Неожиданный символ при записи в Excel с использованием Pandas - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть dictionary, как это:

film = {
    'ID': [],
    'Name': [],
    'Run Time': [],
    'Genre': [],
    'link': [],
    'name 2': []
}

Затем я заполняю его в цикле for, например:

film['ID'].append(film_id)
film['Name'].append(film_name)
film['Run Time'].append(film_runtime)
film['Genre'].append(film_genre)
film['link'].append(film_link)
film['name 2'].append(film_name2)

Затем я преобразовываю словарь в Pandas DataFrame, чтобы я мог записать его в файл .xlsx. Теперь, прежде чем я действительно это напишу, я распечатаю его, чтобы проверить значения столбца Run Time. И все в порядке:

output_df = pd.DataFrame(film).set_index('ID')
print(output_df['Run Time'])

output:
ID
102    131
103     60
104       
105       
Name: Run Time, dtype: object

Но потом, когда я пишу это, вот так:

writer = ExcelWriter('output.xlsx')
output_df.to_excel(writer, 'فیلم')
writer.save()

Файл выглядит так:

weird output

Как видите, в файле есть дополнительный символ ' (одинарная кавычка). Этот персонаж не виден. Но я могу выделить это:

highlighted

И если я уберу его, номер будет RTL:

removed

Поэтому я подумал, что невидимым персонажем был LTR MARK (\u200E). Я удалил это так:

film['Run Time'].append(film_runtime.replace('\u200E', ''))

Но ничего не произошло, и персонаж все еще там.

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Перед преобразованием в файл .xlsx необходимо убедиться, что ячейки, которые должны быть числами, конвертируются в числа (обычно в целые числа).

В вашем случае просто:

film['Run Time'].append(int(film_runtime))
0 голосов
/ 22 апреля 2019

'перед значением в Excel заставляет значение в строку.Похоже, Excel Writer интерпретирует такой список как строковый массив.Изменение типа в DataFrame должно решить эту проблему.

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