我在熊猫数据框中有一些数据,存储如下:
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位保持一致。在
提前感谢您的支持!在
我在pandas数据框中找到了解决这个问题的方法。在
我注意到,当值以浮点形式存储在pandas数据框中时,我有一个尾随的零;所以一切都很好。当序列被转换成一个字符串(这样我就可以添加一个$或%)时,我就失去了试验零。在
我发现使用以下命令可以避免转换为字符串,并获得相同的结果:
添加前导$符号
df['ABC']=df['ABC'].apply(lambda x:'${:,.2f}'。格式(x))
添加尾随%符号
df['ABC']=df['ABC'].apply(lambda x:'{:,.2f}%'。格式(x))
感谢那些回应的人。在
df.to\U csv在您的代码中,对于小数点后有两个非零位数的数字,它将非常有效。对于小数点后的任何零,它将在写入时被删除。 你不应该有任何问题。在
相关问题 更多 >
编程相关推荐