【问题标题】:convert float64 (from excel import) to str using pandas使用 pandas 将 float64(从 excel 导入)转换为 str
【发布时间】:2021-12-20 17:18:06
【问题描述】:

尽管同一个问题已被多次询问。我似乎没有让它工作。 我使用 python 3.8 并读取这样的 excel 文件

df = pd.read_excel(r"filename.xlsx")

A 列是 float64 类型,当我使用 spyder 打开 df 时,我看到这样的情况:"1.5934e+06" 所以,我需要把它变成一个 7 位数的字符串,然后我使用了:

df["columnA] = df["columnA].astype(str).str.zfill(7)

但结果是:"1593396.0"

我怎样才能得到 this = 1593396

我尝试将 '.0' 替换为 '',但没有成功。它没有从末尾获取“.0”,而是删除了单元格中的任何零!

【问题讨论】:

  • 试试df["columnA] = df["columnA].astype(int).astype(str).str.zfill(7)

标签: python-3.x pandas dataframe type-conversion float64


【解决方案1】:

当您输入“astype(str)”时,代码会将整个浮点数转换为字符串,包括点和零。

我在下面的代码中所做的是:

1 - 格式化浮点数,使其有 2 个小数位。 (这已经转换成字符串了)。

2 - 将字符串的“.00”替换为“”;

3 - 保留代码中已经存在的 zfill。

df["columnA"] = df["columnA"].map('{:.2f}'.format).replace('\.00', '', regex=True).str.zfill(7)

编辑

添加一个提示,正如 Corralien 所说,可以预期在读取文件时已经有一个步骤。最好只在所需的列中执行:

df = pd.read_excel(r"filename.xlsx",converters={'columnA':str})
df['columnA'] = df['columnA'].str.zfill(7)

【讨论】:

  • 谢谢 - 编辑后的答案更轻松地完成了这项工作!
【解决方案2】:

不要让 Pandas 推断您的数据类型,使用 dtype=str 作为 pd.read_csv 的参数:

df = pd.read_excel(r"filename.xlsx", dtype=str)

【讨论】:

  • 谢谢!!简单而有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
相关资源
最近更新 更多