我的目标是将数据框对象导出到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
文件与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
答案 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中可能会发生某些事情。