基于其他行值设置列值:男生成绩匹配女生标记需求
数据处理需求解法
原始数据
| Gender | Marks |
|---|---|
| M | 75 |
| F | 88 |
| M | 93 |
| M | 88 |
| F | 98 |
需求描述
筛选出所有Gender为M的行,新增Same_Marks列:当该行的Marks值存在于Gender为F的行的Marks值中时,设为1,否则设为0。
预期输出
| Gender | Marks | Same_Marks |
|---|---|---|
| M | 75 | 0 |
| M | 93 | 0 |
| M | 88 | 1 |
解决方案
方法1:Python Pandas
import pandas as pd # 加载数据(实际场景可替换为读取文件,如pd.read_csv) df = pd.DataFrame({ 'Gender': ['M', 'F', 'M', 'M', 'F'], 'Marks': [75, 88, 93, 88, 98] }) # 提取女性的分数集合 female_marks = df[df['Gender'] == 'F']['Marks'].unique() # 筛选男性行并生成标记列 result_df = df[df['Gender'] == 'M'].copy() result_df['Same_Marks'] = result_df['Marks'].isin(female_marks).astype(int) # 输出结果 print(result_df)
方法2:SQL
假设数据表名为student_scores,执行以下查询:
SELECT Gender, Marks, CASE WHEN Marks IN (SELECT Marks FROM student_scores WHERE Gender = 'F') THEN 1 ELSE 0 END AS Same_Marks FROM student_scores WHERE Gender = 'M';
内容的提问来源于stack exchange,提问作者Priyal Bansal
相关产品推荐
相关产品推荐

