You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中if语句如何正确使用any()判断DataFrame行是否满足多条件

错误原因

你代码里的any(coin in xlist['col1'][ii])写法存在两处逻辑错误:

  • coin是存储条件的列表,xlist['col1'][ii]是单个字符串,coin in xlist['col1'][ii]是尝试判断整个列表是否是字符串的子元素,类型不匹配,因此触发TypeError
  • any()需要接收一个由布尔值组成的可迭代对象,你需要先逐个判断每个条件是否满足,再把判断结果传给any()
修正后的遍历写法

把if判断行修改为逐个遍历条件列表判断即可,完整可运行代码如下:

import numpy as np
import pandas as pd

coin = ['a','b','c'] # conditions

xlist = pd.DataFrame() # data
xlist['col1'] = np.array(['a','j','k','b','b','d','c','a']) # state
xlist['col2'] = np.array([1,2,2,1,2,0,1,3])

for ii in range(len(xlist)):
    # 逐个判断coin中的元素是否匹配当前行的col1值
    if any(c in xlist['col1'][ii] for c in coin):
        # if state meets a condition, do calculation x
        print('result 1')
    else:
        # if state doesn't meet condition, do calculation y
        print('result 2')

运行后即可得到你预期的输出。

更推荐的Pandas向量化实现

遍历DataFrame行的效率极低,数据量较大时性能很差,你可以直接用Pandas内置的isin()方法批量判断所有行的匹配状态:

import numpy as np
import pandas as pd

coin = ['a','b','c']
xlist = pd.DataFrame({
    'col1': ['a','j','k','b','b','d','c','a'],
    'col2': [1,2,2,1,2,0,1,3]
})

# 批量生成匹配结果
result = np.where(xlist['col1'].isin(coin), 'result 1', 'result 2')
# 逐行打印或者直接批量做后续计算
for res in result:
    print(res)

内容的提问来源于stack exchange,提问作者Medulla Oblongata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:45:03