1

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

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

A 列是 float64 类型,当我使用 spyder 打开 df 时,我会看到这样的情况:"1.5934e+06" 所以,我需要将其设为 7digit 字符串并使用:

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

但结果是:“1593396.0”

结果如何得到 this = 1593396

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

4

2 回答 2

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)
于 2021-11-07T16:00:59.570 回答
1

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

df = pd.read_excel(r"filename.xlsx", dtype=str)
于 2021-11-07T16:43:09.247 回答