遍历动态变化列时从Pandas DataFrame提取指定时间范围行生成新表
解决方案
你可以直接使用pandas内置的between方法做时间范围筛选,不需要依赖动态遍历的列名,生成的新DataFrame会完整保留原表的所有列结构:
情况1:时间列名固定为Time(s)
# inclusive='both' 表示包含时间范围的两端值,copy()避免后续操作触发链式赋值警告 df2 = df1[df1['Time(s)'].between(timelower, timeupper, inclusive='both')].copy()
情况2:不想硬编码列名,按位置取时间列(比如时间列永远是第一列)
# iloc[:,0] 取所有行的第一列作为时间判断依据,适配列名变化的场景 df2 = df1[df1.iloc[:, 0].between(timelower, timeupper, inclusive='both')].copy()
以上操作不管你之前遍历的是哪些动态列,都只会按时间条件过滤行,不会修改原表的列结构,完全符合需求。
内容的提问来源于stack exchange,提问作者Flynn O'Connell
相关产品推荐
相关产品推荐

