带有pandas.DataFrame.to_csv()的数字格式列?

时间:2015-08-27 11:43:23

标签: pandas pandasql

我有一个过程,而不是使用以下方法从Microsoft SQL数据库中读取信息:

df = psql.read_sql(sql, con=connection)
print(df)

此函数在许多进程中使用,因此变量sql不具有相同的列(变量结构)。

然后我得到以下数据:

STORE EMAIL_CONTACT VALUE
10    a@mail.com    2.2100
23    b@mail.com    0.7990

到目前为止一切都很好。

使用以下方法解压缩到csv时

file = r"Test.csv"
df.to_csv(file, sep=";", index=False, quoting=csv.QUOTE_ALL)

输出如下:

"STORE";"EMAIL_CONTACT";"VALUE"
"10.0";"a@mail.com";"2.2100"
"23.0";"b@mail.com";"0.7990"

列STORE现在有“.0”......

有没有办法配置函数“to_csv”来准确输出(值),如print所示?提前谢谢。

"STORE";"EMAIL_CONTACT";"VALUE"
"10";"a@mail.com";"2.2100"
"23";"b@mail.com";"0.7990"

已解决:问题在于十进制选项:

df.to_csv(file, sep=";", index=False, quoting=csv.QUOTE_ALL, decimal=",")

"STORE";"EMAIL_CONTACT";"VALUE"
"10";"a@mail.com";"2.2100"
"23";"b@mail.com";"0.7990"

感谢大家的支持!

1 个答案:

答案 0 :(得分:1)

STORE可能是一个浮点数,请用

查看
print df.STORE.dtype

如果是这样,请执行:

df.STORE = df.STORE.astype(int)

然后:

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

输出:

STORE;EMAIL_CONTACT;VALUE
1;a@mail.com;2.2100
2;b@mail.com;0.7990

编辑: 制表用法:

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

这将输出具有以下格式的csv:

STORE    EMAIL_CONTACT    VALUE
1    a@mail.com    2.2100
2    b@mail.com    0.7990