如何在Pandas切片中添加行?已有筛选切片需追加其他条件数据
回答你的DataFrame筛选追加问题
当然两种方式都能实现需求,但具体用哪种取决于你的场景,我给你拆解一下:
1. 直接扩展selection的方式(可行,但要注意细节)
你可以把cond2筛选出的数据直接合并到已有的selection里,但要注意pandas的append()方法已经被弃用,现在官方推荐用pd.concat()来做:
# 先筛选出cond2的结果 cond2_result = df[df.apply(cond2, axis=1)] # 合并到selection selection = pd.concat([selection, cond2_result], ignore_index=True)
⚠️ 这里要注意:如果有行同时满足cond1和cond2,合并后会出现重复的行。如果不想保留重复数据,可以加上drop_duplicates():
selection = pd.concat([selection, cond2_result]).drop_duplicates(ignore_index=True)
2. 更高效的方式:合并条件一次筛选
其实如果你的需求只是把满足cond1 或者 cond2的行都选出来,完全不需要分两次筛选再合并,直接把两个条件用逻辑或组合,一次遍历DataFrame就能搞定,效率更高:
# 用lambda把两个条件合并 selection = df[df.apply(lambda row: cond1(row) or cond2(row), axis=1)]
这种方式只需要对df做一次apply操作,比分两次apply再合并节省一半的遍历时间,数据量大的时候优势很明显。
什么时候需要先生成selection2再合并?
如果你的cond2筛选逻辑依赖于selection处理后的某些中间结果(比如你在「部分逻辑」里对selection做了修改,然后需要基于修改后的结果去筛选cond2),那这种情况下就必须先生成selection2,再和处理后的selection合并。
总结一下:如果只是单纯的合并两个条件的筛选结果,优先用合并条件一次筛选的方式;如果有依赖中间逻辑的需求,再选择先生成selection2再合并的方式。
内容的提问来源于stack exchange,提问作者 GhostKU
相关产品推荐
相关产品推荐

