Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Excel中将带有数字列的数据框另存为文本_Python_Excel_Pandas_Dataframe - Fatal编程技术网

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

Python 在Excel中将带有数字列的数据框另存为文本,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,我正在尝试将Pandas数据框导出到Excel,其中所有列都是文本格式。默认情况下,pandas.to_excel()函数允许excel决定数据类型。导出带有[1,2,'w']的列会导致包含1和2的单元格为数字,包含'w'的单元格为文本。我希望列中的所有行都是文本(即,['1','2','w']) 我可以通过使用.astype(str)将我需要的列指定为文本来解决这个问题。但是,如果数据很大,我担心会遇到性能问题。如果我理解正确,df[col]=df[col].astype(str)会复制数据,

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

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

将熊猫作为pd导入
df=pd.DataFrame({'a':[1,2,'w'],'b':['x','y','z']})
df['a']=df['a'].aType(str)
df.to_excel(r'c:\tmp\test.xlsx')
有没有更有效的方法

我找了好几次,都没发现这上面有什么。如果这个问题以前已经得到回答,请原谅我。这是我的第一篇帖子,我真的很高兴参加这个很酷的论坛


编辑:多亏了我收到的评论,我看到这给了我其他的astype(str)选项。这真的很有用。我还想知道astype(str)是否效率低下,因为它复制了数据,而我现在看到它没有。我不认为这种方法不会有性能问题,因为数据不是复制的,而是替换的。您还可以使用将整个
数据帧
转换为
字符串
类型

df = df.astype(str)

您可以在
DataFrame.astype()
函数中使用
copy=False
。然后用这个循环遍历所有列。不是很优雅,但它确实完成了任务。引用的“将一系列整数转换为字符串”非常有用。我感谢所有的评论。我没有意识到这个命令是一个替换,而不是一个副本。谢谢你帮我理解这一点!