【发布时间】:2019-12-29 04:14:31
【问题描述】:
我正在尝试将 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')
有没有更有效的方法来做到这一点?
我搜索了几次,但没有看到任何内容。如果之前已经回答过,请原谅我。这是我的第一篇文章,我很高兴能参加这个很酷的论坛。
编辑:感谢我收到的 cmets,我看到 Converting a series of ints to strings - Why is apply much faster than astype? 为我提供了 astype(str) 的其他选项。这真的很有用。我还想知道 astype(str) 是否因为它复制了数据而效率低下,而我现在发现它没有。
【问题讨论】:
-
您可以在
DataFrame.astype()函数中使用copy=False。然后用这个循环遍历所有列。不是很优雅,但它确实完成了工作。 -
引用的“将一系列整数转换为字符串”非常有帮助。我感谢所有的 cmets。
标签: python excel pandas dataframe