You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas DataFrame中提取斜杠后的特定字符串?

解决提取仓库名称后缀的问题

嗨,我来帮你搞定这个提取/后字符串的需求,先梳理下你代码里的小问题,再给你靠谱的实现方案~

先指出你代码里的几个小问题

  • 变量名不匹配:你定义了refactoring_details = df['repository'],但后面用了未定义的repo_Name;
  • to_frame参数错误:name应该传字符串(比如'repository'),而不是传Series对象;
  • 正则表达式为空:这就是extract完全不起作用的核心原因。

正确的实现方案

我们需要捕获/之后的所有字符,这里提供两种实用方法:

方法1:用str.extract配合正则表达式

正则可以写r'\/(.*)',其中:

  • \/:转义斜杠(斜杠在正则里是特殊字符,必须转义);
  • (.*):捕获斜杠后面的所有字符(.匹配任意字符,*匹配0次或多次)。

完整可运行代码:

import pandas as pd

# 读取你的CSV数据
df = pd.read_csv('result_refactorings.csv', sep=';')

# 将repository列转为DataFrame(如果需要单独处理的话)
repo_df = df['repository'].to_frame(name='repository')

# 提取/后的字符串,生成新列
repo_df['repo_suffix'] = repo_df['repository'].str.extract(r'\/(.*)')

print(repo_df)

运行后你会得到新列repo_suffix,里面就是你想要的android-dev-sources这类目标字符串。

方法2:用str.split拆分字符串(更直观)

如果你的仓库名称格式都是用户名/仓库名这种固定结构,用split会更简单,不需要写正则:

import pandas as pd

df = pd.read_csv('result_refactorings.csv', sep=';')
# 按/拆分字符串,取拆分后的第2个元素(索引为1)
df['repo_suffix'] = df['repository'].str.split('/', expand=True)[1]

# 查看结果
print(df[['repository', 'repo_suffix']])

这个方法更适合格式固定的场景,同样能精准提取到你需要的内容。

测试示例(用你给出的样例数据)

data = {'Repository': [
    'ParaskP7/android-dev-sources',
    'uholeschak/ediabaslib',
    't3hk0d3/ruby_faceapp',
    'prateekbh/hopon',
    'c0i/cocos2d-x-v2',
    'risk1996/ctg-cheat',
    'GiacomoPignoni/undercover_discord_bot',
    'vyasishanatc194/Crowdbotics-React-Native-Test'
]}
df_test = pd.DataFrame(data)
df_test['repo_suffix'] = df_test['Repository'].str.extract(r'\/(.*)')
print(df_test)

运行后会输出包含正确提取后缀的DataFrame,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Oumayma Hamdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:10:35