遍历DataFrame的time_period列时,如何访问当前行的type列值?
解决方案
问题根源
你之前的代码只遍历了time_period列的单个值,没法关联到对应行的type值。而且df_course['type'] == 'Post Graduate'是拿整个type列和字符串比较,得到的是布尔值数组,不是当前行的判断结果,逻辑自然不成立。
推荐做法:先筛选再处理(Pandas最优方式)
Pandas的核心是向量化操作,尽量避免逐行循环。先直接筛选出符合条件的行,再按需处理:
# 筛选出time_period=6且type为'Post Graduate'的行 filtered_rows = df_course[(df_course['time_period'] == 6) & (df_course['type'] == 'Post Graduate')] # 遍历筛选后的行进行操作 for index, row in filtered_rows.iterrows(): # 可以通过row['time_period']、row['type']访问当前行的对应值 # do something
可选做法:逐行遍历(小数据量可用)
如果一定要逐行遍历整个DataFrame,用iterrows()或itertuples()来获取每行的完整数据:
方法1:用iterrows()
for index, row in df_course.iterrows(): if row['time_period'] == 6 and row['type'] == 'Post Graduate': # do something
方法2:用itertuples()(效率更高)
for row in df_course.itertuples(): if row.time_period == 6 and row.type == 'Post Graduate': # do something
内容的提问来源于stack exchange,提问作者Prakket
相关产品推荐
相关产品推荐

