请求:基于作者拆分现有数据集的Python实现方案
问题描述
我有如下格式的数据集:
text author title ------------------------------------- dt = text0 author0 title0 text1 author1 title1 . . . . . . . . .
我希望创建多个独立数据集,每个数据集仅包含单一作者的文本。例如dt1包含author1的文本,dt2包含author2的文本等。恳请提供Python实现方案。
更新:
实际数据集示例如下:
dt = text author title ------------------------------------------------------------------------- 0 I would like to go to the beach George Beach 1 I was in park few days ago Nick Park 2 I would like to go in uni Peter University 3 I have be in the airport at 8 Maria Airport
解决方案
假设你的数据集是用pandas的DataFrame存储的,以下是实现代码:
1. 加载数据(示例)
如果还未加载数据,可参考以下方式构建或读取DataFrame:
import pandas as pd # 示例数据(实际可替换为读取本地文件,如pd.read_csv()) dt = pd.DataFrame({ 'text': ['我想去海滩', '几天前我在公园', '我想去大学', '我8点在机场'], 'author': ['George', 'Nick', 'Peter', 'Maria'], 'title': ['Beach', 'Park', 'University', 'Airport'] })
2. 按作者拆分数据集
方式一:用字典统一管理(推荐)
这种方式避免创建大量零散变量,便于后续操作:
# 初始化字典存储每个作者的数据集 author_datasets = {} # 按author列分组,遍历每个分组 for author_name, group in dt.groupby('author'): # 重置子数据集的索引并存入字典 author_datasets[author_name] = group.reset_index(drop=True) # 示例:获取George的数据集 print(author_datasets['George'])
方式二:动态创建独立变量
如果需要直接以dt_作者名的形式调用每个数据集,可使用globals()实现:
# 遍历分组,动态生成变量 for author_name, group in dt.groupby('author'): var_name = f'dt_{author_name}' globals()[var_name] = group.reset_index(drop=True) # 直接调用生成的变量 print(dt_George) print(dt_Nick)
关键说明
groupby('author')会将原数据集按作者名分组,每个分组对应单一作者的所有数据;reset_index(drop=True)用于重置子数据集的索引,避免保留原数据集的索引序号;- 若你的原始数据不是DataFrame格式,可先通过
pd.DataFrame()转换后再执行上述操作。
内容的提问来源于stack exchange,提问作者John Angelopoulos
相关产品推荐
相关产品推荐

