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

如何用Pandas按相同时间戳分组并合并字符串为唯一Token集合?

按时间戳分组并合并唯一Token字符串的解决方案

核心思路

先按时间戳对数据集分组,再对每个分组内的字符串进行Token拆分、去重,最后将去重后的Token合并为单个字符串。下面以Python的pandas库为例给出具体实现:

代码实现

import pandas as pd

# 模拟原始数据集(替换成你实际的读取逻辑,比如pd.read_csv()/pd.read_excel())
data = {
    'date': ['2011-02-01 15:00:00'] * 5,
    'string': [
        'Richmond Service Index',
        'S&P/CS HPI Composite - 20 s.a. n.s.a',
        'Texas Services Sector Outlook',
        'TIC Net Long-Term Transactions including Swaps',
        'Richmond Service Index'  # 包含重复Token的示例
    ]
}
df = pd.DataFrame(data)

# 定义分组处理函数:拆分Token、去重(保留首次出现顺序)、合并
def process_group(strings):
    # 按空格拆分所有字符串为Token(可根据实际分隔符调整,比如split(', '))
    all_tokens = []
    for s in strings:
        all_tokens.extend(s.split())
    # 去重并维持原始顺序
    unique_tokens = list(dict.fromkeys(all_tokens))
    # 合并为单个字符串
    return ' '.join(unique_tokens)

# 按时间戳分组,应用处理函数
result_df = df.groupby('date')['string'].apply(process_group).reset_index()

# 查看结果
print(result_df)

关键细节说明

  • Token拆分:默认按空格分割,若你的字符串使用其他分隔符(逗号、分号等),直接修改split()的参数即可。
  • 去重逻辑:dict.fromkeys()可以在去重的同时保留Token首次出现的顺序;若不关心顺序,也可以用list(set(all_tokens)),但会打乱原有顺序。
  • 批量数据适配:如果你的数据来自CSV/Excel文件,把模拟数据部分替换成pd.read_csv('你的文件路径.csv')即可直接使用。

可选SQL实现思路(适合简单场景)

如果用MySQL处理,可通过GROUP_CONCAT结合DISTINCT实现:

SELECT 
    date,
    GROUP_CONCAT(DISTINCT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(string, ' ', n), ' ', -1)) SEPARATOR ' ') AS string
FROM your_table
-- 这里的数字序列需根据最长字符串的Token数量调整
JOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) numbers
ON CHAR_LENGTH(string) - CHAR_LENGTH(REPLACE(string, ' ', '')) >= n - 1
GROUP BY date;

注:SQL方式灵活性较低,复杂场景优先推荐Python处理。

内容的提问来源于stack exchange,提问作者Kevin Putra Santoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:18