我的目标是将dataframe对象导出到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文件。我得到了:
如您所见,phone
和employees
发生了变化。我希望它们被保存为字符串。相反,它被格式化为奇怪的浮点数和日期格式。
为什么会这样呢?如何使我的test.csv
文件与pandas
中的输出df
完全相同
编辑:当我运行print(df.dtypes)
时
name object
phone object
employees object
dtype: object
同样奇怪的是,当我将相同的test.csv
文件重新打开到pandas中时,格式是正确的:
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
发布于 2019-11-07 02:04:02
正如其他人所指出的,您的问题是您的电子表格会自动将您的电话号码解释为数字。要提示其他应用程序应将这些内容视为文本而不是数字,请在编写csv时强制使用引号。
import csv
df.to_csv('./test.csv', sep = ',', index = False, quoting=csv.QUOTE_ALL)
请理解,这只是一个提示。CSV规范是最小的,应用程序想做什么就做什么。
发布于 2019-11-07 00:56:41
你的数据类型是什么?df.dtypes
您可能必须将dtype更改为字符串(如果它们当前不是字符串),以便它们以正确的格式保存。否则,如果您尝试打开csv,excel中可能会发生一些事情。
https://stackoverflow.com/questions/58734999
复制相似问题