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

Python中使用If else条件处理Pandas DataFrame列取值的问题

正确实现方案

推荐:Pandas向量化实现(无循环,性能最优)

Pandas优先推荐使用向量化运算处理数据,相比循环性能高很多,实现代码如下:

import pandas as pd
import numpy as np

# 构造示例DataFrame,你实际使用时替换为自己的df即可
data = {
    'NE Name': ['ABC', 'Site1&site2', 'site3&site4', 'site5', 'site6&site8'],
    'Subrack': ['master', 'site1', 'site3', 'master', 'site6']
}
df = pd.DataFrame(data)

# 核心逻辑:满足条件返回第1列,否则返回第0列
df['result'] = np.where(
    df.iloc[:, 0].str.contains('&', regex=False), # regex=False避免特殊字符被识别为正则
    df.iloc[:, 1],
    df.iloc[:, 0]
)

# 打印结果
print(df['result'])

运行后输出的结果完全符合需求:

0      ABC
1    site1
2    site3
3    site5
4    site6
Name: result, dtype: object

修正后的循环实现版本

如果你需要坚持使用循环逻辑,修正后的可运行代码如下:

for i in range(len(df)):
    ne_name = df.iloc[i, 0]
    if '&' in ne_name:
        print(df.iloc[i, 1])
    else:
        print(ne_name)

原代码问题说明

  • 循环语法错误:for i in :没有传入迭代范围,需要用range(len(df))遍历所有行索引
  • 方法调用错误:str.contains是Pandas Series的专属方法,不能作用在单个字符串上,单个字符串判断包含关系直接用in运算符即可
  • 条件判断逻辑错误:all()用于对多元素布尔值做与运算,单个值无需调用;布尔值True和字符串'TRUE'不相等,导致原有判断条件永远不成立

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:36:03