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

如何将Pandas DataFrame中的PT字段与对象列表匹配并添加对应分组字段

解决Pandas DataFrame匹配分组的问题

这里有两种实用的方法来实现你需要的PT字段与group的匹配需求:

方法1:字典映射(高效简洁)

先把你的myList转换成一个以label为键、group为值的字典,然后用Pandas的map()方法快速完成匹配,最后填充无匹配项的标记值:

import pandas as pd

# 初始化你的数据
df = pd.DataFrame({'Number': [5, 64, 7], 'PT': ['AA', 'BB', 'CC']})
myList = [{'label': 'AA', 'value': 'AA', 'group': 'A'}, {'label': 'BB', 'value': 'BB', 'group': 'B'}]

# 转换为匹配字典
group_map = {item['label']: item['group'] for item in myList}

# 匹配并填充无匹配项
df['group'] = df['PT'].map(group_map).fillna('NOT_MATCHED')

print(df)

运行后输出结果:

Number PT       group
0       5  AA           A
1      64  BB           B
2       7  CC  NOT_MATCHED

方法2:DataFrame合并(适合复杂场景)

如果后续你的myList可能涉及更复杂的匹配逻辑,可以先把它转换成DataFrame,再和原数据做左连接,最后处理空值:

import pandas as pd

df = pd.DataFrame({'Number': [5, 64, 7], 'PT': ['AA', 'BB', 'CC']})
myList = [{'label': 'AA', 'value': 'AA', 'group': 'A'}, {'label': 'BB', 'value': 'BB', 'group': 'B'}]

# 转换myList为DataFrame,只保留需要的字段
group_df = pd.DataFrame(myList)[['label', 'group']]

# 左连接匹配,匹配后删除冗余字段
df = df.merge(group_df, left_on='PT', right_on='label', how='left').drop('label', axis=1)

# 填充无匹配项的标记值
df['group'] = df['group'].fillna('NOT_MATCHED')

print(df)

这个方法的输出和方法1完全一致,适合需要保留更多myList字段或者多条件匹配的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:03:13