如何在Pandas中筛选特定条件行并包含其前N行基线数据?
解决方案
步骤1:加载数据并筛选目标行
先确保已正确加载CSV数据,再筛选出concentration > 10的行(优化你原有的代码):
import pandas as pd # 加载CSV文件 dF1 = pd.read_csv("your_file.csv") # 筛选符合条件的行,保留指定列 target_rows = dF1[dF1["concentration"] > 10][["duration", "measurement", "concentration"]]
步骤2:提取指定数量的基线数据(concentration=0)
根据不同需求,有几种常见提取方式:
- 取前100行基线数据:如果基线是按时间/采集顺序排列的,直接取前100行
baseline_rows = dF1[dF1["concentration"] == 0][["duration", "measurement", "concentration"]].head(100)
- 随机抽取100行基线数据:不需要固定顺序时,随机选100行(
random_state保证结果可复现)
baseline_rows = dF1[dF1["concentration"] == 0][["duration", "measurement", "concentration"]].sample(n=100, random_state=42)
- 按时间排序后取前100行:需要按
duration顺序的基线时,先排序再提取
baseline_rows = dF1[dF1["concentration"] == 0][["duration", "measurement", "concentration"]].sort_values("duration").head(100)
步骤3:合并基线与目标数据
用pd.concat按顺序合并,基线在前、目标行在后:
# 合并后重置索引,避免索引重复 dF2 = pd.concat([baseline_rows, target_rows], ignore_index=True)
验证结果
可以打印前后部分数据确认:
print("前10行基线数据:") print(dF2.head(10)) print("\n后10行目标数据:") print(dF2.tail(10))
内容的提问来源于stack exchange,提问作者JChoi
相关产品推荐
相关产品推荐

