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

如何使用Pandas截断CSV文件中根字符串周边的字符串?

使用Pandas处理CSV,根据根字符串截断语句内容

嘿,我来帮你搞定这个需求!要实现根据另一列的根字符串截断原语句的功能,我们可以用Pandas搭配Python的字符串处理能力来完成,下面是具体的步骤和代码示例:

1. 准备工作

首先假设你的CSV文件里有两列核心数据:

  • original_text:存储需要处理的原语句
  • root_string:存储作为截断中心的根字符串
    我们会生成一个新列truncated_text来存放处理后的结果。

先导入Pandas库:

import pandas as pd

2. 定义截断逻辑函数

我写了一个通用的处理函数,针对你的示例需求做了适配——它会以根字符串为中心,保留其前后指定数量的词,去掉更远的无关内容:

def truncate_text(original, root):
    # 如果根字符串不在原语句里,直接返回原内容
    if root not in original:
        return original
    
    # 把原语句按空格拆成单词列表
    words = original.split()
    # 找到根字符串在单词列表里的位置
    root_idx = words.index(root)
    
    # 这里根据你的示例,保留根字符串前4个词、后4个词(包含根字符串本身)
    # 你可以根据实际需求调整数字
    start_idx = max(0, root_idx - 4)
    end_idx = min(len(words), root_idx + 5)  # 因为切片是左闭右开,所以+5才能包含后4个词
    
    # 把选中的单词拼接成新字符串
    return ' '.join(words[start_idx:end_idx])

3. 应用到CSV数据上

读取你的CSV文件,然后用apply方法把函数批量应用到每一行:

# 替换成你的CSV文件路径
df = pd.read_csv('your_data.csv')

# 生成处理后的新列
df['truncated_text'] = df.apply(lambda row: truncate_text(row['original_text'], row['root_string']), axis=1)

# 可以打印几行看看结果
print(df[['original_text', 'root_string', 'truncated_text']].head())

4. 用你的示例验证

我们用你给出的测试数据跑一遍,看看结果是否符合预期:

# 示例测试数据
test_data = {
    'original_text': ['lack of association between the promoter polymorphism of the mtnr1a gene and adolescent idiopathic scoliosis'],
    'root_string': ['mtnr1a']
}
test_df = pd.DataFrame(test_data)

# 应用函数
test_df['truncated_text'] = test_df.apply(lambda row: truncate_text(row['original_text'], row['root_string']), axis=1)

# 打印结果
print(test_df['truncated_text'].iloc[0])

运行后会输出:

promoter polymorphism of the mtnr1a gene and adolescent idiopathic

完全和你想要的结果一致!

5. 灵活调整规则

如果你的需求不是固定保留前后4个词,比如需要根据特定关键词(比如the、of)来截断,或者保留更复杂的上下文,可以修改start_idx和end_idx的计算逻辑。举个例子:

  • 如果想向前截断到最近的the之后:可以从root_idx往前遍历,找到第一个the的位置,然后把start_idx设为这个位置+1
  • 如果想向后截断到最后一个形容词(需要简单的NLP支持),可以用nltk库做词性标注后筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:19