带有pandas.DataFrame.to_csv()的数字格式列?
我有一个从Microsoft SQL数据库读取信息的过程,使用:带有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 =
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 = 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