首页 > 解决方案 > 如何使用熊猫将前导零转换为十进制?

问题描述

我有一个excel文件,其中列显示如下:

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

所以我需要制作一个数据框,向我显示前导零为十进制的数字,就像这样:

|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 文件)

标签: pythonexcelpandasdataframedataformat

解决方案


使用Series.str.replacewith^作为字符串的开头,然后将值转换为浮点数,因为如果浮点数带有整数,则.0默认情况下整数将转换为带有后缀的平面:

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

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

推荐阅读