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

Python Excel列对比:按特定规则标记结果求助

解决方案:用Pandas实现你的Excel列判断逻辑

你用的Pandas完全能搞定这个需求,不需要额外库。先拆解你的规则,用向量化操作实现,比循环高效得多:

步骤说明

  1. 优先判断下划线情况:只要Rosyi或Azmi任意一列包含“_”,直接标记为other
  2. 再判断HTTP匹配情况:如果两列都包含“http”且内容完全一致,标记为agreed
  3. 剩余情况:你没指定规则,这里默认标记为disagreed,可以根据实际需求修改

完整代码

import pandas as pd
import numpy as np

# 读取Excel文件
df = pd.read_excel('rosyi.xlsx')

# 定义判断条件
has_underscore = (df['Rosyi'].str.contains('_', na=False)) | (df['Azmi'].str.contains('_', na=False))
both_http_and_equal = (df['Rosyi'].str.contains('http', na=False)) & (df['Azmi'].str.contains('http', na=False)) & (df['Rosyi'] == df['Azmi'])

# 按优先级执行多条件判断
df['Diff'] = np.where(has_underscore, 'other',
                      np.where(both_http_and_equal, 'agreed', 'disagreed'))

# 查看处理结果
print(df)

关键细节解释

  • str.contains('_', na=False):检查字符串是否包含下划线,na=False是把空值统一判定为“不包含”,避免空值导致的报错
  • 嵌套np.where是按规则优先级执行:先处理下划线的情况,再处理HTTP匹配的情况,最后覆盖剩余所有情况
  • 你原来的代码df['Rosyi'] & df['Azmi']是把列当成布尔值做逻辑运算,根本没检查内容里的下划线或http,所以结果不符合预期

可选调整

如果你的数据里有空值需要特殊处理,比如空值也标记为other,可以在has_underscore条件里加上空值判断:(df['Rosyi'].isna()) | (df['Azmi'].isna())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:04:55