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

Python中基于DataFrame2的ID与Query过滤DataFrame1,提取指定Query之后的Support Team数据

解决方法:按ID分组定位对话后续的支持团队回复

我来帮你搞定这个问题!你之前遇到的KeyError是因为用loc直接按Query字符串切片完全不对——loc是按DataFrame的索引值来操作的,而你的df1索引是无序的数字,根本不是Query内容,自然会报错。而且就算Query是索引,无序的索引切片也不会按对话的先后顺序来筛选,完全不符合你的需求。

核心思路

我们需要先给每个ID的对话组标记顺序,然后精准定位目标Query在组内的位置,再筛选该位置之后的支持团队回复:

  1. 给df1的每个ID分组添加组内对话序号,用来标记同ID下的对话先后顺序
  2. 遍历df2的每一行,找到对应ID和Query在df1中的位置序号
  3. 在对应ID组里,筛选序号大于目标位置且Sent by为Support Team的行
  4. 合并所有符合条件的行得到最终结果

完整代码

import pandas as pd

# 假设你的df1和df2已经加载完成,先给df1添加组内对话序号
df1['group_order'] = df1.groupby('ID').cumcount()

# 初始化结果列表
result_rows = []

# 遍历df2的每一条查询
for _, target_row in df2.iterrows():
    target_id = target_row['ID']
    target_query = target_row['Query']
    
    # 找到df1中匹配ID和Query的行,获取它的组内序号
    matched_row = df1[(df1['ID'] == target_id) & (df1['Query'] == target_query)]
    if matched_row.empty:
        # 如果没有找到对应的对话(比如df2里的77832条目),直接跳过
        continue
    target_order = matched_row['group_order'].iloc[0]
    
    # 筛选对应ID组中,在目标Query之后的支持团队回复
    filtered_data = df1[
        (df1['ID'] == target_id) &
        (df1['group_order'] > target_order) &
        (df1['Sent by'] == 'Support Team')
    ]
    result_rows.append(filtered_data)

# 合并结果并清理不必要的列
final_result = pd.concat(result_rows).drop('group_order', axis=1).reset_index(drop=True)
print(final_result)

代码解释

  • groupby('ID').cumcount():给每个ID组内的行从0开始分配连续序号,完美保留对话的原始顺序,不管索引有多乱
  • 遍历df2时,先检查是否存在匹配的ID和Query,避免无意义的报错
  • 最后合并结果并删除临时的group_order列,得到你想要的干净输出

运行这段代码后,输出就会和你期望的完全一致:

ID                          Query        Sent by
0   76649    yes tigers can be found there  Support Team
1   76649  contact forest dept for more     Support Team
2   76649  thanks for reaching out        Support Team
3   67209    yes lions can be found there   Support Team
4   67209  contact forest dept for more     Support Team
5   67209  thanks for reaching out        Support Team

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:22:47