【问题标题】:Save Pandas dataframe with numeric column as text in Excel将带有数字列的 Pandas 数据框保存为 Excel 中的文本
【发布时间】: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) 是否因为它复制了数据而效率低下,而我现在发现它没有。

【问题讨论】:

标签: python excel pandas dataframe


【解决方案1】:

我认为这种方法不会出现性能问题,因为数据不是复制而是替换。您也可以使用

将整个dataframe 转换为string 类型
df = df.astype(str)

【讨论】:

  • 我没有意识到这个命令是替换,而不是复制。感谢您帮助我理解这一点!
猜你喜欢
  • 2018-06-09
  • 2016-09-29
  • 1970-01-01
  • 2016-02-25
  • 2020-09-08
  • 2022-10-26
  • 2021-05-26
  • 2020-09-20
  • 2021-03-29
相关资源
最近更新 更多