将带有数字列的熊猫数据框另存为 Excel 中的文本



我正在尝试将熊猫数据帧导出到 Excel,其中所有列都是文本格式。 默认情况下,pandas.to_excel(( 函数允许 Excel 决定数据类型。 导出带有 [1,2,'w'] 的列会导致包含 1 和 2 的单元格为数字,而包含"w"的单元格为文本。 我希望列中的所有行都是文本(即 ['1'、'2'、'w'](。

我能够通过使用 .astype(str( 将我需要的列分配为文本来解决问题。 但是,如果数据很大,我担心会遇到性能问题。 如果我理解正确,df[col] = df[col].astype(str( 会复制数据,这效率不高。

import pandas as pd
df = pd.DataFrame({'a':[1,2,'w'], 'b':['x','y','z']})
df['a'] = df['a'].astype(str)
df.to_excel(r'c:tmptest.xlsx')

有没有更有效的方法可以做到这一点?

我搜索了几次,没有看到任何内容。 如果以前已经回答过这个问题,请原谅我。 这是我的第一篇文章,我真的很高兴参加这个很酷的论坛。

编辑:感谢我收到的评论,我看到将一系列整数转换为字符串 - 为什么应用比 astype 快得多? 给了我其他选项来 astype(str(。 这真的很有用。 我还想知道astype(str(是否效率低下,因为它复制了数据,我现在看到它没有。

我认为这种方法不会遇到性能问题,因为数据不会被复制而是被替换。您也可以使用以下方法将整个dataframe转换为string类型

df = df.astype(str)

最新更新