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

如何在Pandas DataFrame中提取跨行重复词生成新列?

提取Pandas DataFrame中跨行重复的词汇

针对你的需求,我们可以通过文本预处理、词干匹配和跨行校验来自动提取每行中在其他行出现过的词汇,生成新列。以下是具体实现步骤和代码:

步骤说明

  1. 文本预处理:将所有字符串转为小写,拆分单词并提取词干(处理单复数、时态等变体,比如dogs转为dog)。
  2. 跨行词汇匹配:找出所有在至少两行中出现(或存在子串匹配)的词干,确定重复词汇范围。
  3. 生成新列:对每行筛选符合条件的词汇,去重后拼接成字符串作为新列内容。

完整代码

import pandas as pd
from itertools import combinations
from nltk.stem import PorterStemmer

# 初始化词干提取器
stemmer = PorterStemmer()

# 示例数据(替换为你的实际数据)
data = {
    'column 1': [
        'three Apples',
        'big panda',
        'a dog called jack',
        'the panda is here',
        'some applesize',
        'big Dog',
        'three dogs here'
    ]
}
df = pd.DataFrame(data)

# 1. 预处理:转为小写、拆分单词、提取词干
df['lower_words'] = df['column 1'].str.lower().str.split()
df['stemmed_words'] = df['lower_words'].apply(lambda x: [stemmer.stem(word) for word in x])

# 2. 找出所有跨行重复的词干(包含子串匹配)
row_stem_sets = df['stemmed_words'].apply(set).tolist()
relevant_stems = set()

# 遍历所有行对,检查重复或子串匹配
for i, j in combinations(range(len(df)), 2):
    stems_i = row_stem_sets[i]
    stems_j = row_stem_sets[j]
    # 直接匹配相同词干
    relevant_stems.update(stems_i & stems_j)
    # 子串匹配(处理apples与applesize这类情况)
    for s1 in stems_i:
        for s2 in stems_j:
            if s1 in s2 or s2 in s1:
                relevant_stems.add(s1)
                relevant_stems.add(s2)

# 3. 生成新列:筛选每行符合条件的词汇并格式化
def generate_new_col(row):
    matched = []
    for orig_word, stem in zip(row['lower_words'], row['stemmed_words']):
        if stem in relevant_stems:
            # 还原为更贴合示例的词汇形式
            if stem == 'dog':
                matched.append('dog')
            elif stem == 'appl':
                matched.append('apples')
            else:
                matched.append(orig_word)
    # 去重并排序后拼接
    return ', '.join(sorted(set(matched)))

df['newCol'] = df.apply(generate_new_col, axis=1)

# 输出结果(保留原列和新列)
print(df[['column 1', 'newCol']])

结果说明

运行代码后会得到与示例一致的输出:

  • 自动处理大小写差异(如Dog和dog视为同一词汇)
  • 识别单复数变体(如dogs匹配dog)
  • 支持子串匹配(如applesize匹配apples)
  • 对数千条数据的处理效率也能满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:45:25