Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有pandas.DataFrame.to_csv()的数字格式列?_Pandas_Pandasql - Fatal编程技术网

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

带有pandas.DataFrame.to_csv()的数字格式列?,pandas,pandasql,Pandas,Pandasql,我有一个从Microsoft SQL数据库读取信息的过程,使用: df = psql.read_sql(sql, con=connection) print(df) 此函数用于许多进程,因此variablesql不具有相同的列(变量结构) 然后我得到,例如,以下数据: STORE EMAIL_CONTACT VALUE 10 a@mail.com 2.2100 23 b@mail.com 0.7990 到目前为止,一切都很好 使用以下命令提取到csv时: file =

我有一个从Microsoft SQL数据库读取信息的过程,使用:

df = psql.read_sql(sql, con=connection)
print(df)
此函数用于许多进程,因此variable
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"
列存储现在有“.0”

是否有办法将函数“to_csv”配置为精确输出(值),如打印所示?提前谢谢

"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"

谢谢大家的支持

存储可能是一个浮动,请与

print df.STORE.dtype
如果是,请:

df.STORE = df.STORE.astype(int)
然后:

输出:

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

为什么需要引号?还可以检查存储值的类型吗?打印df.STORE.dtype?仅尝试df.to_csv(file,sep=“;”,index=False)这意味着
STORE
列的数据类型可能是float,尝试
df['STORE']=df['STORE'].astype(int)
和对csvAt MSSQL表的写入,STORE是十进制(8,0)。引号是可选的。实际上不需要它们,而且
df.STORE.dtype
是float64。让我困惑的是,当我打印df时,所有值都是预期值,但在导出时,它会“添加”x.0到存储。
print(df.STORE.dtype)
返回float64。有没有一种方法可以精确地输出显示的内容?因为sql可以从表中选择A、B或从表中选择X、Y、Z。您可以使用\t作为制表的sep,请检查编辑。制表将在值之间进行分隔,但除非您手动操作,否则无法准确导出带有调整列的文件,否则它不是csv。感谢您的回复YODA。我的问题不在于分隔符。正在尝试精确输出为csv(值,而不是分隔符),如打印(df)中所示。变量SQL是“variable”,这意味着我不能使用df.STORE.astype(int),因为它不存在。例如,SQL可以是SELECT STORE FROM ST,但在下一个过程中,它可以是SELECT AMOUNT FROM DF。我的目标是充满活力。奇怪的是,当打印df时,一切都正常,但当导出df时,结果却不同。很抱歉,给您带来了这么多麻烦。使用decimal=“,”时,一切正常。新手犯的错误
df.to_csv(文件,sep=“;”,index=False,quoting=csv.QUOTE_ALL,decimal=“,”)
STORE    EMAIL_CONTACT    VALUE
1    a@mail.com    2.2100
2    b@mail.com    0.7990