如何在Pandas DataFrame中保留每第7行?含100行首行起始示例
如何在Pandas DataFrame中保留每第7行?
核心思路
Pandas的索引切片支持start:end:step的语法,刚好能搞定这种每隔固定行数筛选数据的需求。这里要先明确:Pandas默认是0-based索引(也就是我们肉眼看到的“第一行”,对应代码里的索引是0),所以如果需求是从显示的第一行开始保留每第7行,起始索引就用0,步长设为7就行。
具体实现方法
方法一:用iloc快速切片
iloc是Pandas按位置索引的利器,处理这种按行位置筛选的场景最直接:
import pandas as pd # 假设你的DataFrame命名为df filtered_df = df.iloc[::7]
解释下:[::7]表示从第0行(第一行)开始,遍历到最后一行,每7行取一次数据,最终保留的就是第1、8、15...行(对应索引0、7、14...)。
方法二:布尔索引显式筛选
如果想让筛选逻辑更直观,也可以用布尔数组来标记需要保留的行:
# 生成布尔数组:索引是7的倍数时为True mask = df.index % 7 == 0 filtered_df = df[mask]
这个方法和上面的效果完全一致,只是把筛选逻辑明写出来了,适合需要灵活调整条件的场景。
针对100行DataFrame的验证
如果你的DataFrame刚好有100行(索引从0到99),用上面的方法筛选后,保留的行索引是0、7、14...直到98(因为98=7×14,下一个105超过99了),总共15行,完美符合“从第一行开始,保留每第7行”的要求。
额外调整:如果从第7行开始保留
要是你需求变成从第7行(而非第一行)开始保留每第7行,只需要修改起始索引:
# 从索引7(第8行)开始,每7行取一次 filtered_df = df.iloc[7::7]
内容的提问来源于stack exchange,提问作者Shamoon
相关产品推荐
相关产品推荐

