如何移除DataFrame字符串指定位置的0,保留数据自身的0?
仅删除指定位置0的解决方案
针对固定格式字符串0xxxx000xxxx,要只删除固定位置的0而保留数据本身的0,这里提供两种实用方法:
方法1:字符串切片拼接
因为格式固定,直接通过切片提取需要保留的部分再拼接即可。以示例输入099890000890为例,它的结构是:第1位是要删的0,接下来4位是有效数据,然后3位是要删的0,最后4位是有效数据。直接截取对应位置拼接:
import pandas as pd # 示例数据 df = pd.DataFrame({'item': ['099890000890', '012300004560']}) # 切片拼接:跳过第1位,取1-4位,再跳过中间3个0取后面的部分 df['item'] = df['item'].apply(lambda s: s[1:5] + s[8:])
运行后示例输入会输出99890890,完美保留了原数据中的0。
方法2:正则表达式匹配
如果需要确认字符串严格符合0xxxx000xxxx结构,可以用正则捕获有效部分并替换:
# 正则模式:匹配开头的0,捕获第一个4位有效数据,匹配中间3个0,捕获第二个4位有效数据 df['item'] = df['item'].str.replace(r'^0(....)000(....)$', r'\1\2')
这里的(....)对应4位有效数据,如果你的xxxx是5位,就改成(.....),以此类推。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

