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

基于多条件筛选Pandas DataFrame行并新增Fruit标记列

Pandas按多条件标记列实现方案

完整代码实现

import pandas as pd

# 初始化DataFrame
df = pd.DataFrame({
    'A Code': ['123', '234', '345', '234', '789', '345'],
    'B Code': ['345', '123', '234', '123', '567', '567'],
    'C Code': ['678', '123', '456', '234', '321', '789'],
    'X Code': ['987', '765', '432', '876', '321', '765'],
    'Y Code': ['765', '876', '987', '765', '432', '543'], 
    'H Code 1': ['EF', 'AB', 'GH', 'CD', 'GH', 'CD'],
    'H Code 2': ['AB', 'CD', 'CD', 'AB', 'CD', 'GH']
})

# 拆解并定义四个条件
cond1 = df[['H Code 1', 'H Code 2']].isin(['AB', 'EF']).any(axis=1)
cond2 = df[['X Code', 'Y Code']].isin(['765']).any(axis=1)
cond3 = df[['A Code', 'B Code', 'C Code']].isin(['123']).any(axis=1) & df[['X Code', 'Y Code']].isin(['987']).any(axis=1)
cond4 = df[['A Code', 'B Code', 'C Code']].isin(['234', '345']).any(axis=1) & df[['X Code', 'Y Code']].isin(['876']).any(axis=1)

# 生成Fruit列:满足任一条件标记apple,否则banana
df['Fruit'] = ['apple' if c else 'banana' for c in cond1 | cond2 | cond3 | cond4]

print(df)

条件逻辑说明

  • 条件1:判断H Code 1或H Code 2是否为'AB'或'EF',isin匹配目标值,any(axis=1)确保每行只要有一个字段满足即返回True。
  • 条件2:判断X Code或Y Code是否为'765',逻辑同条件1。
  • 条件3:需同时满足两个子条件:A/B/C Code存在'123',且X/Y Code存在'987',用&实现逻辑与。
  • 条件4:需同时满足两个子条件:A/B/C Code存在'234'或'345',且X/Y Code存在'876',逻辑与连接。

输出结果

运行代码后将得到符合需求的DataFrame:

A Code B Code C Code X Code Y Code H Code 1 H Code 2   Fruit
0    123    345    678    987    765       EF       AB   apple
1    234    123    123    765    876       AB       CD   apple
2    345    234    456    432    987       GH       CD  banana
3    234    123    234    876    765       CD       AB   apple
4    789    567    321    321    432       GH       CD  banana
5    345    567    789    765    543       CD       GH   apple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45