如何筛选同名但不同平台不同年份发行的电子游戏数据?
筛选CSV中同名但不同平台/年份的游戏
以下是用Python pandas高效解决这个问题的步骤和代码:
- 首先导入pandas库并读取CSV文件:
import pandas as pd # 替换成你的CSV文件路径 df = pd.read_csv('game_sales.csv')
- 第一步:找出存在多条记录的游戏名称
先统计每个游戏名称出现的次数,筛选出出现次数≥2的名称:
# 获取有重复记录的游戏名称列表 duplicate_names = df['Name'].value_counts()[df['Name'].value_counts() >= 2].index
- 第二步:筛选出这些游戏的所有记录
把原数据中属于上述名称的记录全部提取出来:
filtered_games = df[df['Name'].isin(duplicate_names)]
- 第三步:过滤出满足条件的记录
对每个游戏名称分组,检查该名称下是否存在不同的Platform或不同的Year,保留符合条件的分组:
# 筛选:同名且存在不同平台 或 不同年份的游戏 result = filtered_games.groupby('Name').filter(lambda group: group['Platform'].nunique() > 1 or group['Year'].nunique() > 1)
- 查看结果
可以直接打印结果的前几行验证:
print(result.head())
为什么之前的方法没成功?
- 双重循环不仅效率低,还容易因为索引或判断逻辑疏漏出错;
- 单纯按
Name, Year, Platform分组会把每个唯一组合单独分组,无法直接筛选出同名但不同平台/年份的记录,而用groupby.filter()可以对每个名称的分组做整体判断,保留符合条件的所有记录。
内容的提问来源于stack exchange,提问作者lazlomeli
相关产品推荐
相关产品推荐

