簡體   English   中英

如何使用 pandas 將前導零轉換為十進制?

[英]How to convert leading zeros to decimal using pandas?

我有一個 excel 文件,其中列顯示如下:

|Calibre|Item|Aditivo|
|:----|:----|:----|
|015|4120|NO|
|018|4123|SI|
|2|4212|NO|
|075|4141|SI|
|500|4143|NO|

所以我需要制作一個 dataframe 向我顯示以十進制表示的前導零的數字,就像這樣:

|Calibre|Item|Aditivo|
|:----|:----|:----|
|0.15|4120|NO|
|0.18|4123|SI|
|2|4212|NO|
|0.75|4141|SI|
|500|4143|NO|

我只需要轉換一些特定的列。 目前我找到的解決方案是這樣的:

df=pd.read_excel('/content/file.xlsx',converters={'Calibre':str})
cal=[]
for i in df['Calibre']:
  if i[0]=='0':
    cal.append(float(i.replace('0','0.')))
  else:
    cal.append(int(i))
df['Calibre']=cal

但我真的認為有更好的方法來做到這一點(我也無法編輯 excel 文件)

使用Series.str.replace^作為字符串的開頭,然后將值轉換為浮點數,因為如果浮點數帶有整數,則整數默認轉換為帶有.0后綴的平面:

df=pd.read_excel('/content/file.xlsx',converters={'Calibre':str})

df['Calibre'] = df['Calibre'].str.replace('^0','0.').astype(float)

您可以將代碼轉換為 function 並使用.apply() 如果沒有好的樣本數據集,我無法對其進行測試,但這可能比遍歷每個單元格/行更有效。

df=pd.read_excel('/content/file.xlsx',converters={'Calibre':str})
cal=[]

def convert_to_float(cell):
  if cell[0]=='0':
    return(float(i.replace('0','0.')))
  else:
    return(int(i))

df['Calibre'] = df['Calibre'].apply(convert_to_float, axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM