如何筛选DataFrame中多值列含指定项的行并展示?
提取包含'Bcom'的课程行的实现方法
需求说明
从给定的包含多值课程(分号分隔)的DataFrame中,提取所有与'Bcom'相关的条目,保留对应行的其他字段信息,最终仅显示'Bcom'对应的行。
实现步骤
- 构造原DataFrame(如果已有数据可跳过此步)
import pandas as pd df = pd.DataFrame({ 'uni_id': [1, 1, 2], 'country_name': ['UK', 'UK', 'UK'], 'scholarship': [1, 0, 1], 'timeperiod': [4, 2, 3], 'type': ['UG', 'PG', 'UG'], 'course_name': ['Btech;Bcom;BArts', 'Mba', 'Bcom;xyx'] })
- 拆分多值课程并展开为多行
将course_name列中用分号分隔的课程拆分成独立条目,同时复制其他列的对应数据:
df_expanded = df.assign(course_name=df['course_name'].str.split(';')).explode('course_name')
- 筛选目标课程行
直接筛选出course_name为'Bcom'的行:
result = df_expanded[df_expanded['course_name'] == 'Bcom']
- 查看结果
执行print(result)后,输出结果与预期一致:
uni_id country_name scholarship timeperiod type course_name 0 1 UK 1 4 UG Bcom 2 2 UK 1 3 UG Bcom
补充说明
如果仅需筛选原DataFrame中包含Bcom的行(不拆分多值),可直接用字符串匹配:
df[df['course_name'].str.contains('Bcom')]
但此方法不会拆分多值课程,会保留原行的完整course_name内容,不符合本次需求的输出格式。
内容的提问来源于stack exchange,提问作者Prakket
相关产品推荐
相关产品推荐

