导出包含UTF-8文本和URL的文本列的pandas数据框到Excel

我的pandas数据框由每条推文(300.000行)的推文和元数据组成。 我的一些同事需要在Excel中处理这些数据,这就是为什么我需要导出它。

我想使用pandas提供的.to_csv.to_excel ,但我无法正常工作。

当我使用.to_csv我的问题是它在数据框的文本部分保持失败。 我玩过不同的分隔符,但文件从来没有100%alignment。 文本列似乎包含标签,pipe道字符等混淆Excel。

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

当我尝试与xlsxwriter引擎一起使用.to_excel时,我遇到了一个不同的问题,那就是我的文本列包含许多URL(我认为)。 xlswriter试图制作这些url的特殊点击链接,而不是将它们作为string处理。 我已经find了一些有关如何规避这个问题的信息,但是,我再次无法使其工作。

下面的代码应该用来禁用我认为是造成麻烦的function:

 workbook = xlsxwriter.Workbook(filename, {'strings_to_urls': False}) 

但是,使用to_excel我似乎无法调整该工作簿对象的设置,然后将数据框加载到Excel文件中。

简而言之,如何将Pandas数据框中文本大小不一的列导出到Excel可以理解的内容?

编辑:例如:

 @geertwilderspvv @telegraaf ach Wilders toch, nep-voorzitter van een nep-partij met maar één lid, \nzeur niet over nep-premier of parlement! 

所以在这种情况下显然是一个线路刹车是我的数据。 我会试着find更多的例子。

EDIT2:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error047600_01.xml</logFileName><summary>Er zijn fouten aangetroffen in bestand C:\Users\Guy Mahieu\Desktop\Vu ipython notebook\pandas_simple.xlsx</summary><removedRecords summary="Hier volgt een lijst van verwijderde records:"><removedRecord>Verwijderde records: Formule van het onderdeel /xl/worksheets/sheet1.xml</removedRecord></removedRecords></recoveryLog> 

荷兰语翻译:

在“文件”中find错误。 下面列出了删除的logging:删除logging:零件/xl/worksheets/sheet1.xml的公式

我不认为现在可以通过Pandas API传递XlsxWriter构造函数选项,但是你可以像下面这样解决strings_to_url问题:

 import pandas as pd df = pd.DataFrame({'Data': ['http://python.org']}) # Create a Pandas Excel writer using XlsxWriter as the engine. writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter') # Don't convert url-like strings to urls. writer.book.strings_to_urls = False # Convert the dataframe to an XlsxWriter Excel object. df.to_excel(writer, sheet_name='Sheet1') # Close the Pandas Excel writer and output the Excel file. writer.save() 

更新 :在Pandas的最新版本中,您可以直接将XlsxWriter构造函数选项传递给ExcelWriter() ,并且不需要间接设置writer.book.strings_to_urls

 writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter', options={'strings_to_urls': False}) 
  writer = pd.ExcelWriter(report_file, engine='xlsxwriter', options={'strings_to_urls': False, 'strings_to_formulas': False})