使用 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)
虽然同一个问题已经被问过多次了。我似乎没有让它发挥作用。 我使用 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)