Pandas DataFrame导出to_csv会更改列的类型

时间:2018-05-04 01:15:38

标签: python-3.x pandas

希望是一个简单的请求。

我发现当我构建一个DataFrame并设置列数据类型然后将其导出到csv时,它会将数字字符串的数据类型转换为整数。

例如一个值可能是“0000”,而csv最终会得到值0.但是我需要它来保留字符串中的字符数并将csv保存为“0000”。

任何人都知道保留字符串而不是转换数据类型的方法吗?

导入后设置数据类型无法解决问题(在任何人告诉我我可以在导入之后/之后设置它),因为它会导致在将整数转换为字符串时必须配置前导0的问题在每次进口时,这都不是最佳的。

希望我忽视一些简单的事情。

(编辑) 哦,我的导出线只是一个简单的导出,这就是为什么我可能只是没有意识到需要提供的论点。

df.to_csv("Test.csv", index=False)

1 个答案:

答案 0 :(得分:1)

假设df['your_column']是您要保留的列,您可以使用read_csv()中的dtype参数:

df.read_csv('temp.csv', dtype={'your_column': str})

如果这不起作用,您确定您的列包含要开头的字符串吗?因为这是我看到的行为:

>>> df1 = pd.DataFrame({'a': ['0000', '0000', '0100',]})
>>> df1
      a
0  0000
1  0000
2  0100
>>> df1.to_csv('temp.csv', index=False)
>>> df2.read_csv('temp.csv', dtype={'a': str})
>>> df2
      a
0  0000
1  0000
2  0100

也许您的问题不在于导出或导入,而是在创建时。

df = pd.DataFrame({'a': 0000, 0000, 0100]})

这将使数据框的值为0,0,100。如果您希望它们是字符串,则需要将它们创建为字符串。