雖然同樣的問題已被問過多次。我似乎沒有讓它作業。我使用 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”,而是洗掉了單元格中的所有零!
uj5u.com熱心網友回復:
不要讓 Pandas 推斷您的資料型別,dtype=str用作以下引數pd.read_csv:
df = pd.read_excel(r"filename.xlsx", dtype=str)
uj5u.com熱心網友回復:
當您輸入“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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/353866.html
上一篇:在python中優化for回圈
下一篇:將pandas輸出更改為串列
