将带有数字列的 Pandas 数据框保存为 Excel 中的文本

mhe*_*zog 6 python excel dataframe pandas

我正在尝试将 Pandas 数据框导出到 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:\tmp\test.xlsx')
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:感谢我收到的评论,我看到Converting a series of ints to strings - Why is apply 比 astype 快得​​多?为我提供了 astype(str) 的其他选项。这真的很有用。我还想知道 astype(str) 是否效率低下,因为它复制了数据,但我现在发现它没有。

aes*_*ari 3

我认为这种方法不会出现性能问题,因为数据不是复制而是替换的。您还可以使用以下命令将整体转换dataframe为类型string

df = df.astype(str)
Run Code Online (Sandbox Code Playgroud)