鱿鱼西 2022-12-28 10:25 采纳率: 85.2%
浏览 21
已结题

替换指定开头结尾的df

问题

替换swarms\之后的字符串

遇到的现象

没有替换成功

代码
df=pd.DataFrame({'a':['\REGISTRY\A\Swarms\\2e925746-b0b7-42cb-a5ec-5c4b5f26ea8e','\REGISTRY\A\Swarms\\2e905746-b0b9-42cb-a5ec-1c4b5f26ea8e\have']})
df = df.replace(r'(?<=Swarms\\).+?(?=\\)', 'version', regex=True)
df = df.replace(r'(?<=Swarms\\).+?(?=\s)', 'version', regex=True)
运行结果

前边为Swarms\ 后边为空格的行没有替换成功

我的解答思路

正则匹配,有两种情况
1.替换前边为Swarms\ 后边为\的行
2.替换前边为Swarms\ 后边为空格的行

我想要达到的结果

df=pd.DataFrame({'a':['\REGISTRY\A\Swarms\version','\REGISTRY\A\Swarms\version\have']})

  • 写回答

2条回答 默认 最新

  • 阳光宅男xxb 2022-12-28 11:01
    关注

    不一定非要用正则匹配,用字符串可能更好理解,也不会复杂,请采纳哦:

    import  pandas as pd
    
    def handle(v):
        index1 =v.index('Swarms')+7
        index2 = v.rindex('\\')
        print(str(index1),str(index2))
        if index2 == (index1-1):
            v = v[0:index1] + 'version'
        else:
            v = v[0:index1] + 'version'+v[index2:]
    
        return v
    
    df=pd.DataFrame({'a':[r'\REGISTRY\A\Swarms\2e925746-b0b7-42cb-a5ec-5c4b5f26ea8e',r'\REGISTRY\A\Swarms\2e905746-b0b9-42cb-a5ec-1c4b5f26ea8e\have']})
    df['a'] = df['a'].apply(handle)
    
    print(df)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 修改了问题 12月28日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大