我的Pandas 数据框如下所示:

col1 col2
1 ABC8392akl
2 001523
3 000ABC58

现在我想go 掉前导零,如果字符串只是数字.有什么建议吗?

col1 col2
1 ABC8392akl
2 1523
3 000ABC58

推荐答案

您可以使用带有str.replace的正则表达式:

df['col2'] = df['col2'].str.replace(r'^0+(?!.*\D)', '', regex=True)

输出:

   col1        col2
0     1  ABC8392akl
1     2        1523
2     3    000ABC58

正则表达式:

^0+       # match leading zeros
(?!.*\D)  # only if not followed at some point by a non digit character

variant

由@timgeb建议

df['col2'] = df['col2'].str.replace(r'^0+(\d*)$', r'\1', regex=True)

正则表达式:

^0+       # match leading zeros
(\d*)     # capture other digits (if any)
$         # match end of string

替换为捕获的数字(\1)

Python相关问答推荐

线性模型PanelOLS和statmodels OLS之间的区别

从webhook中的短代码(而不是电话号码)接收Twilio消息

当多个值具有相同模式时返回空

将数据框架与导入的Excel文件一起使用

图像 pyramid .难以创建所需的合成图像

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

根据二元组列表在pandas中创建新列

django禁止直接分配到多对多集合的前端.使用user.set()

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

给定高度约束的旋转角解析求解

Pandas Data Wrangling/Dataframe Assignment

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

旋转多边形而不改变内部空间关系

(Python/Pandas)基于列中非缺失值的子集DataFrame

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

查看pandas字符列是否在字符串列中

根据Pandas中带条件的两个列的值创建新列

有没有办法在不先将文件写入内存的情况下做到这一点?

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

更新包含整数范围的列表中的第一个元素