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

如何基于DataFrame现有数值列、列名及元组列表新增列

解决方法:根据分组批量添加对应列值

我来帮你搞定这个需求!你需要给DataFrame按number列的分组,批量添加对应元组里的内容作为新列对吧?这里有两种简洁的实现方式:

方法一:映射+拆分元组

这种方法直接利用map把number值映射到对应的元组,再把元组拆分成指定列名的新列,代码非常直观:

import pandas as pd
df = pd.DataFrame({'number':[0,0,1,1,2,2,3,3]})
keys = ['foo','bar']
combinations = [('99%',0.9),('99%',0.8),('1%',0.9),('1%',0.8)]

# 创建number到对应元组的映射关系
num_combo_map = dict(zip(df['number'].unique(), combinations))
# 映射后拆分元组为两列,直接赋值给新列
df[keys] = df['number'].map(num_combo_map).apply(pd.Series)

print(df)

方法二:辅助DataFrame合并

如果你的number取值不是连续的索引,这种方法更通用。先把元组列表转成带number列的辅助DataFrame,再和原表合并:

import pandas as pd
df = pd.DataFrame({'number':[0,0,1,1,2,2,3,3]})
keys = ['foo','bar']
combinations = [('99%',0.9),('99%',0.8),('1%',0.9),('1%',0.8)]

# 构建辅助DataFrame:包含number和对应的foo、bar值
combo_df = pd.DataFrame(combinations, columns=keys)
combo_df['number'] = df['number'].unique()

# 左合并原表和辅助表,确保每一行都匹配到对应的值
df = df.merge(combo_df, on='number', how='left')

print(df)

两种方法运行后都会得到你想要的输出:

number  foo  bar
0       0  99%  0.9
1       0  99%  0.9
2       1  99%  0.8
3       1  99%  0.8
4       2   1%  0.9
5       2   1%  0.9
6       3   1%  0.8
7       3   1%  0.8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:22:39