熊猫导出到_csv和excel列格式误解

时间:2019-11-06 16:52:03

标签: python pandas csv

我的目标是将数据框对象导出到csv文件中。我用熊猫来做。

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

这里是一个例子:

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'])

当我跑步时:

print(df)

我得到:

        name            phone employees
0  company A  +39 0584 383468      2-10
1  company B    +590690610966      2-10
2  company C     +18093494353     11-50

我想要的是什么。

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

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

然后转到./test.csv并检查我的csv文件。我得到:

enter image description here

如您所见,phoneemployees已更改。我希望将它们保留为字符串。但是相反,它被格式化为奇怪的浮点数和日期格式。

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

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

name         object
phone        object
employees    object
dtype: object

也很奇怪,当我将相同的test.csv文件打开回熊猫时,格式是正确的:

df = pandas.read_csv("test.csv")
print(df)

我得到:

        name            phone employees
0  company A  +39 0584 383468      2-10
1  company B    +590690610966      2-10
2  company C     +18093494353     11-50

2 个答案:

答案 0 :(得分:0)

正如其他人指出的那样,您的问题是电子表格会将电话号码自动解释为数字。为了向其他应用程序暗示它们应将它们视为文本而不是数字,请在编写csv时强制引用。

import csv

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

了解这只是一个提示。 CSV规范很小,应用程序可以根据需要进行操作。

答案 1 :(得分:-1)

您的dtypes是什么? df.dtypes

如果您当前未将dtypes更改为字符串,则它们可能会以正确的格式保存。否则,如果您尝试打开csv,则excel中可能会发生某些事情。