我正在尝试将Pandas数据框导出到Excel,其中所有列都是文本格式。默认情况下,pandas.to_excel()函数让Excel决定数据类型。导出包含1,2,'w‘的列将导致包含1和2的单元格变为数字,而包含'w’的单元格变为文本。我希望列中的所有行都是文本(即'1','2','w')。
我可以通过使用.astype(str)将我需要的列指定为text来解决这个问题。但是,如果数据很大,我担心会遇到性能问题。如果我没理解错的话,dfcol = dfcol.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')
有没有更有效的方法来做到这一点?
我搜索了好几次,都没有看到任何东西。如果这个问题之前已经回答过了,请原谅。这是我的第一篇文章,我真的很高兴能参与这个很酷的论坛。
编辑:多亏了我收到的评论,我看到Converting a series of ints to strings - Why is apply much faster than astype?为我提供了其他输入(Str)的选项。这真的很有用。我还想知道astype(str)是否效率低下,因为它复制了数据,而我现在发现它不是。
发布于 2019-08-24 08:22:39
我不认为这种方法不会有性能问题,因为数据不是复制的,而是替换的。您还可以使用以下命令将整个dataframe
转换为string
类型
df = df.astype(str)
https://stackoverflow.com/questions/57633032
复制相似问题