【问题标题】:Pandas.to_csv Causing Floats to AppearPandas.to_csv 导致浮动出现
【发布时间】:2020-03-04 20:37:52
【问题描述】:

我创建了一个程序,它接收 Excel 表格,用 Pandas 修改它们,然后将它们保存到 CSV。

当我检查输出 CSV 时,列被视为整数,但是当我上传到 Oracle 时,列变成浮点数。

输入 excel 中的某些列是诸如“3”“4”“1”之类的东西,但其他列包含货币值的实际浮点数。出于这个原因,我不能将 as_type(int) 投射到整个数据帧上。

Excel 表格数以百计,每个月都有不同的列名。所以 as_type(int) 的按列应用将不起作用。

代码示例:

import pandas as pd
output_location = save_location + '.csv'

df_manipulation = pd.read_excel(filepath, index_col=None)
df_manipulation.to_excel(output_location, index = False)

关于如何将相关列保持为整数的任何想法?

【问题讨论】:

  • 你能分享一些CSV的内容吗?
  • 3, London, 4.53, UK 是列内容的示例。
  • 所以3 正在转换为浮点数?
  • 是的,没错。

标签: python pandas export-to-csv


【解决方案1】:

读取 documentation 的 read_excel(),特别是 convert_float 参数,它提到 Excel 在内部将所有数字存储为浮点数。

如果您想手动将列从 float 转换为 int,您可以这样做:

df_manipulation['column_name'] = df_manipulation['column_name'].astype('int')

或者,您可以使用特定数据类型(例如字符串)加载整个工作表:

df_manipulation = pd.read_excel(filepath, index_col=None, dtype = str)

【讨论】:

  • 我最初想到了这个解决方案,但是这个程序运行在数百个不同的数据帧中,并且每个月都会更改列名。我赞成,因为这是一个很好的解决方案,但在这种情况下不可用。您知道将 read_excel 纯粹作为字符串读取的方法吗?
  • @JosephPNardone 您知道将 read_excel 纯粹作为字符串读取的方法吗? 使用dtype 参数。
  • 谢谢AMC,我做了更改,必须等待测试。明天我会更新这个解决方案是否有效@CamelliaHilker,我已经添加了这个并接受了解决方案。
猜你喜欢
  • 2022-07-16
  • 2011-11-14
  • 1970-01-01
  • 2016-01-23
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多