首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas导出to_csv和excel列格式的错误解释

pandas导出to_csv和excel列格式的错误解释
EN

Stack Overflow用户
提问于 2019-11-07 00:52:04
回答 2查看 2.6K关注 0票数 1

我的目标是将dataframe对象导出到csv文件中。我用熊猫做这件事。

我的问题是,当我读取我的csv文件时,一些列的格式与我预期的不同。

下面是一个示例:

代码语言:javascript
运行
复制
import pandas

results = [('company A','+39 0584 383468','2-10'),('company B','+590690610966','2-10'),('company C','+18093494353','11-50')]

df = pandas.DataFrame(results, columns=['name', 'phone', 'employees'])

当我运行时:

代码语言:javascript
运行
复制
print(df)

我得到了:

代码语言:javascript
运行
复制
        name            phone employees
0  company A  +39 0584 383468      2-10
1  company B    +590690610966      2-10
2  company C     +18093494353     11-50

这就是我想要的。

但是当我导出到csv文件时:

代码语言:javascript
运行
复制
df.to_csv('./test.csv', sep = ',', index = False)

然后去./test.csv查看我的csv文件。我得到了:

如您所见,phoneemployees发生了变化。我希望它们被保存为字符串。相反,它被格式化为奇怪的浮点数和日期格式。

为什么会这样呢?如何使我的test.csv文件与pandas中的输出df完全相同

编辑:当我运行print(df.dtypes)

代码语言:javascript
运行
复制
name         object
phone        object
employees    object
dtype: object

同样奇怪的是,当我将相同的test.csv文件重新打开到pandas中时,格式是正确的:

代码语言:javascript
运行
复制
df = pandas.read_csv("test.csv")
print(df)

我得到了:

代码语言:javascript
运行
复制
        name            phone employees
0  company A  +39 0584 383468      2-10
1  company B    +590690610966      2-10
2  company C     +18093494353     11-50
EN

回答 2

Stack Overflow用户

发布于 2019-11-07 02:04:02

正如其他人所指出的,您的问题是您的电子表格会自动将您的电话号码解释为数字。要提示其他应用程序应将这些内容视为文本而不是数字,请在编写csv时强制使用引号。

代码语言:javascript
运行
复制
import csv

df.to_csv('./test.csv', sep = ',', index = False, quoting=csv.QUOTE_ALL)

请理解,这只是一个提示。CSV规范是最小的,应用程序想做什么就做什么。

票数 0
EN

Stack Overflow用户

发布于 2019-11-07 00:56:41

你的数据类型是什么?df.dtypes

您可能必须将dtype更改为字符串(如果它们当前不是字符串),以便它们以正确的格式保存。否则,如果您尝试打开csv,excel中可能会发生一些事情。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58734999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档