如何基于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
相关产品推荐
相关产品推荐

