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

基于行条件为Pandas DataFrame添加分类列

高效给DataFrame添加分类列的Pythonic方法

这里有几种简洁的实现方式,完全不用循环:

方法1:字典映射(推荐,大数据集效率更高)

先构建元素到分类的映射字典,再用map方法批量映射:

import pandas as pd

# 示例数据
df = pd.DataFrame({'Element': ['a_1', 'a_2', 'b_1', 'a_3', 'b_2']})
As = ['a_1', 'a_2', 'a_3']
Bs = ['b_1', 'b_2']

# 构建映射字典(Python3.9+支持|合并字典)
category_map = {elem: 'A' for elem in As} | {elem: 'B' for elem in Bs}
# 兼容旧Python版本的写法:
# category_map = {elem: 'A' for elem in As}
# category_map.update({elem: 'B' for elem in Bs})

df['Category'] = df['Element'].map(category_map)

方法2:isin结合numpy.where

利用isin判断元素是否属于A列表,再用np.where直接赋值:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Element': ['a_1', 'a_2', 'b_1', 'a_3', 'b_2']})
As = ['a_1', 'a_2', 'a_3']
Bs = ['b_1', 'b_2']

df['Category'] = np.where(df['Element'].isin(As), 'A', 'B')

这两种方法都比循环高效得多,尤其是处理大型数据集时优势明显。其中字典映射的方式扩展性更好——如果后续增加更多分类,只需扩展字典即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:20:35