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

Python中基于原DataFrame提取重复字符串片段生成新DataFrame

解决思路与实现代码

核心逻辑

先提取URL中/分割后的有效部分(去掉开头的url),统计所有元素的全局出现频次,再筛选出每行中在至少两行出现过的元素;若该行没有符合条件的元素,则用[""]填充。

分步实现

  1. 分割字符串提取有效部分
    对col1的每个URL按/分割,去掉第一个元素url,得到每行的元素列表。

  2. 统计元素全局出现频次
    收集所有行的元素,用计数器统计每个元素的出现次数,找出重复出现的元素。

  3. 筛选每行的重复元素
    遍历每行的元素列表,仅保留出现次数≥2的元素;若筛选结果为空,则替换为[""]。

完整代码

import pandas as pd
from collections import Counter

# 原DataFrame
d = {'col1': ["url/a/b/c/d", "url/b/c/d", "url/j/k", "url/t/y", 'url/r/a/y'],
     'id':   [1, 2, 3, 4, 5]}
df = pd.DataFrame(data=d)

# 分割字符串,提取去掉url后的部分
df['split_col'] = df['col1'].str.split('/').str[1:]

# 统计所有元素的出现次数
all_elements = [elem for sublist in df['split_col'] for elem in sublist]
elem_counts = Counter(all_elements)

# 定义筛选函数:保留重复出现的元素,无则返回[""]
def filter_duplicates(lst):
    filtered_items = [item for item in lst if elem_counts[item] >= 2]
    return filtered_items if filtered_items else [""]

# 生成结果并整理DataFrame
df['col1'] = df['split_col'].apply(filter_duplicates)
df_result = df[['id', 'col1']].copy()

# 输出结果
print(df_result)

运行结果

id          col1
0   1  [a, b, c, d]
1   2     [b, c, d]
2   3           [""]
3   4           [y]
4   5        [a, y]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:32:31