将Pandas数据写入CSV或SQL会导致尾随0被丢弃

时间:2018-08-13 13:23:20

标签: python pandas sqlite csv

我在pandas数据框中有一些数据,存储方式如下:

0纳斯达克AAPL 1.63 3.51 2.20
1纳斯达克AAPL 2.40 3.59 1.74

当我将其导出到CSV文件或SQLite数据库时,小数点后第二位为零的任何数字都将被截断为小数点后一位(例如2.40变为2.4)。

我用于导出的代码是:

""" Export data to CSV file """

# Output final data as CSV
df.to_csv('stock_data-US.csv', sep=',', float_format='%.2f', encoding='utf-8', index=True)

# Connect to the database file
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()


""" Export dataframe to sqlite table """

# Export pandas array to sqlite table
df.to_sql("stock_data_US", conn, if_exists='replace', index=False)

# Commit changes
conn.commit()

# Close database connection
conn.close()

您可以看到我已经指定了float格式,但是这似乎被忽略了(因为小数点后的数值被四舍五入)。理想情况下,我希望所有导出的数字在小数点后2位保持一致。

谢谢您的支持!

2 个答案:

答案 0 :(得分:0)

您的代码中的 df.to_csv 将非常适合小数点后有两个非零数字的数字。对于小数点后的任何零,它将在写入时删除。 您应该对此没有任何问题。

答案 1 :(得分:0)

我在熊猫数据框中找到了解决此问题的方法。

当值以浮点数形式存储在熊猫数据框中时,我注意到尾随零;一切都很好。当系列转换为字符串(以便我可以添加$或%)时,我失去了试用0。

我发现我可以通过使用以下命令避免转换为字符串,并获得相同的结果:

添加前导$符号

df ['ABC'] = df ['ABC']。apply(lambda x:'$ {:,。2f}'。format(x))

添加结尾的%符号

df ['ABC'] = df ['ABC']。apply(lambda x:'{:,。2f}%'。format(x))

感谢做出回应的人。