使用 pandas 将 float64(从 excel 导入)转换为 str

convert float64 (from excel import) to str using pandas

虽然同一个问题已经被问过多次了。我似乎没有让它发挥作用。 我使用 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”,而是删除了单元格中的所有零!

当您输入“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)

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

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