python - 如何使用熊猫将前导零转换为十进制?
问题描述
我有一个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 文件)
解决方案
使用Series.str.replace
with^
作为字符串的开头,然后将值转换为浮点数,因为如果浮点数带有整数,则.0
默认情况下整数将转换为带有后缀的平面:
df=pd.read_excel('/content/file.xlsx',converters={'Calibre':str})
df['Calibre'] = df['Calibre'].str.replace('^0','0.').astype(float)
推荐阅读
- php - Laravel - 在 Jobs 中使用图像干预。图像ttfbbox错误
- r - readr::type_convert 弄乱了时间列
- linux - 带有 Qt 5.12 QSocketNotifier 的 ZeroMQ 只触发一次
- c# - 尽管用户具有正确的角色,但在控制器方法上使用 Authorize 注释仍显示“访问被拒绝”
- java - 使用 1.HttpURLConnection.setRequestProperty 和 2. 使用 CURL 将 b/w http 标头值设置为 null 有什么区别?
- mongodb - mongodb找到key过大的文档
- gulp - 如何调整我的 gulp 静态资产修订以与 ServiceWorkers 一起使用?
- hibernate - 我如何通过使用 Guava 来使用休眠 2 级缓存
- tabulator - 需要有关在制表器上加载和保存数据的建议
- ios - Objective-C/Xcode 状态栏颜色与导航栏颜色相同