Pandas如何选择iloc[-7]前最后一个Monday至DataFrame底部的所有行
实现步骤
- 先定位到倒数第7行对应的位置索引,作为查找周一的截止边界
- 提取从DataFrame开头到该截止边界的所有行,筛选出
Day of Week为Monday的行,取最后一个匹配行作为起始行 - 截取从起始行到DataFrame末尾的所有数据即可,不用单独判断倒数第7行是否为周一(如果倒数第7行本身是周一,会自动被识别为最近的周一)
完整代码
通用兼容版本(支持任意索引类型)
n_rows = len(day_csv) # 倒数第7行对应的位置索引 check_pos = n_rows - 7 # 查找截止到check_pos的所有周一的索引,取最近的一个 latest_monday_label = day_csv.iloc[:check_pos + 1][day_csv['Day of Week'] == 'Monday'].index[-1] # 将索引标签转为iloc所需的位置索引 latest_monday_pos = day_csv.index.get_loc(latest_monday_label) # 截取目标数据 result_df = day_csv.iloc[latest_monday_pos:]
简化版本(仅适用于默认整数递增索引)
如果你的DataFrame用的是pandas默认生成的从0开始的整数索引,可以直接简化为:
check_pos = len(day_csv) -7 latest_monday_pos = day_csv.iloc[:check_pos+1][day_csv['Day of Week'] == 'Monday'].index[-1] result_df = day_csv.iloc[latest_monday_pos:]
边界说明
如果存在数据行数不足7行的场景,可以提前加长度校验:
if len(day_csv) <7: # 自定义不足7行的处理逻辑,比如直接返回全部数据 result_df = day_csv.copy() else: # 执行上述筛选逻辑 pass
内容的提问来源于stack exchange,提问作者Kartöfluvofan
相关产品推荐
相关产品推荐

