使用Python和Pandas实现游戏销售数据过滤代码求助
修正后的游戏销售数据集过滤代码
原代码核心错误说明
- 混淆了列名列表
cols与DataFrame的列数据,直接用cols做数值判断完全错误 - 逻辑运算符误用:三个过滤条件需同时满足,应使用
&(逻辑与)而非|(逻辑或) - 逐行计算销量和时错误调用
sum(),直接对列做加法即可实现逐行运算 - DataFrame筛选语法错误,正确的条件筛选+列选择需用
loc或先筛选再选列的方式
可运行的修正代码
import pandas as pd df = pd.read_csv('/datasets/vg_sales.csv') df['user_score'] = pd.to_numeric(df['user_score'], errors='coerce') developers = ['SquareSoft', 'Enix Corporation', 'Square Enix'] cols = ['name', 'developer', 'na_sales', 'eu_sales', 'jp_sales'] # 定义三个过滤条件 condition1 = (df['na_sales'] > 0) & (df['eu_sales'] > 0) & (df['jp_sales'] > 0) condition2 = df['jp_sales'] > (df['na_sales'] + df['eu_sales']) condition3 = df['developer'].isin(developers) # 组合条件并筛选指定列 df_filtered = df.loc[condition1 & condition2 & condition3, cols] print(df_filtered)
代码说明
- 条件1:确保三个地区销量均大于0,用
&连接每个地区的判断,括号避免运算优先级问题 - 条件2:逐行判断日本销量是否大于北美+欧洲销量之和,直接对列做加法实现逐行计算
- 条件3:用
isin()匹配指定开发商列表 - 筛选数据:用
loc同时指定行条件和列名,语法更清晰且避免链式索引的潜在问题
内容的提问来源于stack exchange,提问作者Roger Sterling
相关产品推荐
相关产品推荐

