python - 将 Pandas 数据写入 CSV 或 SQL 会导致删除尾随 0
问题描述
我在熊猫数据框中有一些数据,存储如下:
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()
如您所见,我已经指定了浮点格式,但是这似乎被忽略了(因为小数位被四舍五入)。理想情况下,我希望所有导出的数字在小数点后两位保持一致。
提前感谢您的任何支持!
解决方案
我在 pandas 数据框中找到了解决此问题的方法。
我注意到当值作为浮点数存储在熊猫数据框中时,我的尾随零;所以一切都很好。当系列转换为字符串(所以我可以添加 $ 或 %)时,我失去了试用零。
我发现我可以通过使用以下命令避免转换为字符串并获得相同的结果:
添加前导 $ 符号
df['ABC'] = df['ABC'].apply(lambda x: '${:,.2f}'.format(x))
添加尾随 % 符号
df['ABC'] = df['ABC'].apply(lambda x: '{:,.2f}%'.format(x))
感谢那些回复的人。
推荐阅读
- python - Python cv2 .mp4 编解码器无法在浏览器中显示
- typescript - Apollo graphql 在 useQuery 和 typescript 中使用枚举作为变量
- c - 使用 const 或 define 时,初始化元素在 C 中不是常量
- c# - 如何为 linq 查询的结果创建视图模型以及如何将值传递给视图模型的字段?
- android - 如何为 Webview 设置画中画?
- dependencies - 如何让用户为 AutoConf 中的依赖项提供安装前缀?
- bash - 如何仅在一行中打印组列表,它们之间有逗号?
- javascript - 如果输入框不为空,reactjs 将继续关注输入框
- python - python - 解决 vigenere 挑战
- laravel - Facebook auth 返回空名称和电子邮件 laravel 8 sociallite