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

如何基于Python Pandas中某列的值创建新DataFrame?

按query id拆分DataFrame的正确实现

原代码的问题

  • Python不支持df{i}这种动态命名变量的写法,会直接触发语法错误。
  • df_list.append()里没传要添加的对象,运行会报错。
  • 代码只创建了空的DataFrame,没根据每个query id筛选原数据填充内容。

推荐实现:用字典存储(方便通过query id查找)

把每个query id作为字典的键,对应筛选后的DataFrame作为值,后续想调用哪个query id的数据直接按键取值就行:

import pandas as pd

# 假设原始数据集是df
query_data_dict = {}

# 遍历每个唯一的query id
for qid in df['query id'].unique():
    # 筛选当前query id的所有行,用copy避免和原数据绑定
    query_data_dict[qid] = df[df['query id'] == qid].copy()

# 示例:获取WT04-170对应的数据集
print(query_data_dict['WT04-170'])

另一种方式:用列表存储

如果不需要关联query id,只是单纯把拆分后的DataFrame存成列表:

df_list = []

for qid in df['query id'].unique():
    df_list.append(df[df['query id'] == qid].copy())

# 示例:获取第一个拆分后的数据集
print(df_list[0])

更简洁的groupby写法

如果想更高效简洁,可以用pandas的groupby方法:

# 按query id分组
query_groups = df.groupby('query id')

# 转成字典
query_data_dict = {name: group.copy() for name, group in query_groups}

# 转成列表
df_list = [group.copy() for _, group in query_groups]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:50:34