如何用Pandas基于行级双整数条件比较两列并执行操作?
Pandas行级双条件判断解决方案
构造示例数据
先还原你的样例DataFrame:
import pandas as pd data = { 'Column A': [120, 140, 110], 'Column B': [3, 4, 1] } df = pd.DataFrame(data)
正确实现方式
方式一:布尔索引筛选后遍历
先通过布尔条件筛选出符合要求的行,再遍历执行操作,这种方式效率更高(Pandas推荐的向量化操作思路):
# 组合双条件:Column A>120 且 Column B>2 condition = (df['Column A'] > 120) & (df['Column B'] > 2) filtered_df = df[condition] # 遍历筛选结果执行操作 for _, row in filtered_df.iterrows(): # 这里替换为你需要的打印或其他逻辑 print(f"匹配行:Column A={row['Column A']}, Column B={row['Column B']}")
方式二:逐行apply处理
如果需要对每一行都做判断(哪怕不符合条件也要执行其他逻辑),可以用apply逐行处理:
def handle_row(row): if row['Column A'] > 120 and row['Column B'] > 2: # 符合条件时的操作 print(f"匹配行:Column A={row['Column A']}, Column B={row['Column B']}") # 可以添加不符合条件时的逻辑 df.apply(handle_row, axis=1)
你之前出错的原因
直接用if搭配df.loc会报错,因为df.loc返回的是布尔Series(一组布尔值),而if语句只能判断单个布尔值,无法直接处理整个Series。必须先通过布尔索引筛选出子集,或者用apply拆解到行级判断。
内容的提问来源于stack exchange,提问作者Samson Shoyombo
相关产品推荐
相关产品推荐

