导出 Pandas 文本列的数据框包含 utf-8 文本和指向 Excel 的 URL
Export Pandas data frame with text column containg utf-8 text and URLs to Excel
我的 Pandas 数据框由推文和每条推文的元数据组成(300.000 行)。我的一些同事需要在 Excel 中处理这些数据,这就是我需要导出它的原因。
我想使用 .to_csv
或 .to_excel
,它们都由 Pandas 提供,但我无法使其正常工作。
当我使用 .to_csv
时,我的问题是数据框的文本部分一直失败。我玩过不同的分隔符,但文件从未 100% 对齐。文本列似乎包含制表符、管道字符等,这让 Excel.
感到困惑
df.to_csv('test.csv', sep='\t', encoding='utf-8')
当我尝试将 .to_excel
与 xlsxwriter
引擎一起使用时,我遇到了一个不同的问题,即我的文本列包含许多 URL(我认为)。 xlswriter
尝试为这些 URL 创建特殊的可点击链接,而不是仅仅将它们作为字符串处理。我找到了一些关于如何规避此问题的信息,但我还是无法让它发挥作用。
应该使用以下代码来禁用我认为引起问题的功能:
workbook = xlsxwriter.Workbook(filename, {'strings_to_urls': False})
但是,在使用 to_excel
时,我似乎无法在将数据框加载到 Excel 文件之前调整 Workbook 对象的此设置。
简而言之,如何将包含大量不同文本的列从 Pandas 数据框中导出为 Excel 可以理解的内容?
编辑:
示例:
@geertwilderspvv @telegraaf ach Wilders toch, nep-voorzitter van een nep-partij met maar één lid, \nzeur niet over nep-premier of parlement!
所以在这种情况下显然是我的数据的线闸。我会尝试找到更多示例。
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>
荷兰语翻译:
在 "file" 中发现错误。以下是已删除记录的列表:已删除记录:/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})
我的 Pandas 数据框由推文和每条推文的元数据组成(300.000 行)。我的一些同事需要在 Excel 中处理这些数据,这就是我需要导出它的原因。
我想使用 .to_csv
或 .to_excel
,它们都由 Pandas 提供,但我无法使其正常工作。
当我使用 .to_csv
时,我的问题是数据框的文本部分一直失败。我玩过不同的分隔符,但文件从未 100% 对齐。文本列似乎包含制表符、管道字符等,这让 Excel.
df.to_csv('test.csv', sep='\t', encoding='utf-8')
当我尝试将 .to_excel
与 xlsxwriter
引擎一起使用时,我遇到了一个不同的问题,即我的文本列包含许多 URL(我认为)。 xlswriter
尝试为这些 URL 创建特殊的可点击链接,而不是仅仅将它们作为字符串处理。我找到了一些关于如何规避此问题的信息,但我还是无法让它发挥作用。
应该使用以下代码来禁用我认为引起问题的功能:
workbook = xlsxwriter.Workbook(filename, {'strings_to_urls': False})
但是,在使用 to_excel
时,我似乎无法在将数据框加载到 Excel 文件之前调整 Workbook 对象的此设置。
简而言之,如何将包含大量不同文本的列从 Pandas 数据框中导出为 Excel 可以理解的内容?
编辑: 示例:
@geertwilderspvv @telegraaf ach Wilders toch, nep-voorzitter van een nep-partij met maar één lid, \nzeur niet over nep-premier of parlement!
所以在这种情况下显然是我的数据的线闸。我会尝试找到更多示例。
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>
荷兰语翻译:
在 "file" 中发现错误。以下是已删除记录的列表:已删除记录:/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})