鱿鱼西 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 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100