使用Pandas写入Excel时出现意外字符

时间:2019-04-22 16:26:34

标签: python excel python-3.x pandas dataframe

我有这样的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 个答案:

答案 0 :(得分:1)

在转换为.xlsx文件之前,您需要确保将需要为数字的单元格转换为数字(通常为整数)。

就您而言:

film['Run Time'].append(int(film_runtime))

答案 1 :(得分:0)

Excel中值之前的'强制将值转换为字符串。看起来Excel Writer正在将此类列表解释为字符串数组。 在DataFrame中更改类型应该可以解决该问题。