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

如何为DataFrame添加Category列:判断Orig和Dest值均在指定列表

如何为Pandas DataFrame新增分类列,基于两列值是否同时存在指定列表中

我有如下的Pandas DataFrame和列表:

import pandas as pd
df = pd.DataFrame()
df['Orig'] = ['CA', 'OH', 'WA','CA','CA','IN','FL']
df['Dest'] = ['CA', 'CA', 'OH','WA','MI','WA','MA']

lst = ['WA','CA','OH']

需求是:当Orig和Dest列的取值同时存在于列表lst中时,新增的Category列设为'T',否则设为'F'。

输入示例:

Orig Dest
0   CA   CA  
1   OH   CA  
2   WA   OH  
3   CA   WA  
4   CA   MI  
5   IN   WA  
6   FL   MA 

期望输出:

Orig Dest Category  
0   CA   CA        T  
1   OH   CA        T  
2   WA   OH        T  
3   CA   WA        T  
4   CA   MI        F  
5   IN   WA        F  
6   FL   MA        F  

解决方案

可以利用Pandas的isin()方法快速判断列值是否在目标列表中,再结合all(axis=1)验证每行的两个条件是否同时成立,最后将布尔结果转换为需求的'T'/'F'标记。

方法一:高效矢量运算(推荐大数据量场景)

import pandas as pd
import numpy as np

# 生成布尔掩码:每行Orig和Dest都在lst中则为True
mask = df[['Orig', 'Dest']].isin(lst).all(axis=1)
# 将布尔值映射为'T'或'F'
df['Category'] = np.where(mask, 'T', 'F')

print(df)

方法二:逐行判断(适合逻辑理解,小数据量可用)

df['Category'] = df.apply(
    lambda row: 'T' if row['Orig'] in lst and row['Dest'] in lst else 'F',
    axis=1
)

运行上述代码后,输出结果与期望完全一致:

Orig Dest Category
0   CA   CA        T
1   OH   CA        T
2   WA   OH        T
3   CA   WA        T
4   CA   MI        F
5   IN   WA        F
6   FL   MA        F

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:50:38