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

如何用Pandas根据匹配键值在DataFrame中新增列

解决方法

我们可以通过将字符串格式的Bsps列转换为字典,再用Selection_id匹配对应数值的方式实现需求,以下是分步操作:

1. 构造示例DataFrame(替换成你自己的DataFrame即可)

import pandas as pd

# 模拟你的数据结构
data = {
    'Selection_id': [46660181, 40115397, 267698, 34774, 449342],
    'Bsps': ['46660181: 2.1, 40115397: 1.75, 267698: 3.15, 34774: 2.64, 449342: 3.9'] * 5
}
df = pd.DataFrame(data)

2. 把Bsps的字符串转成匹配用的字典

因为你的Bsps列所有行内容一致,只需要提取第一行处理即可:

# 取出第一行的Bsps原始字符串
bsp_raw = df['Bsps'].iloc[0]
# 分割字符串并转换为字典(键转整数、值转浮点数,和Selection_id类型匹配)
bsp_map = {}
for pair in bsp_raw.split(', '):
    key_str, value_str = pair.split(': ')
    bsp_map[int(key_str)] = float(value_str)

3. 新增匹配列

用map方法快速完成Selection_id与字典值的匹配:

df['Bsp_Matched_Value'] = df['Selection_id'].map(bsp_map)

最终效果

运行后你的DataFrame会新增一列,内容就是每个Selection_id对应的数值:

Selection_id                                                Bsps  Bsp_Matched_Value
0      46660181  46660181: 2.1, 40115397: 1.75, 267698: 3.15, 3...                2.10
1      40115397  46660181: 2.1, 40115397: 1.75, 267698: 3.15, 3...                1.75
2       267698  46660181: 2.1, 40115397: 1.75, 267698: 3.15, 3...                3.15
3        34774  46660181: 2.1, 40115397: 1.75, 267698: 3.15, 3...                2.64
4       449342  46660181: 2.1, 40115397: 1.75, 267698: 3.15, 3...                3.90

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:35:49