如何在Pandas中为每个元素添加列,重复其对应Type为La的Value值
在Pandas中为每个Element填充对应特定Type的Value值
现有数据
Element Type Value A Ex 5 A La 9 A Bd 0 B La 2 B Ex 7 B Ex 3
期望结果
Element Type Value La A Ex 5 9 A La 9 9 A Bd 0 9 B La 2 2 B Ex 7 2 B Ex 3 2
解决方案
方法1:groupby + transform
按Element分组后,用transform提取每组中Type为La的Value,自动填充到该组所有行:
import pandas as pd # 构造原始数据集 df = pd.DataFrame({ 'Element': ['A', 'A', 'A', 'B', 'B', 'B'], 'Type': ['Ex', 'La', 'Bd', 'La', 'Ex', 'Ex'], 'Value': [5, 9, 0, 2, 7, 3] }) # 新增La列 df['La'] = df.groupby('Element')['Value'].transform(lambda x: x[df.loc[x.index, 'Type'] == 'La'].iloc[0]) print(df)
方法2:merge合并
先筛选出Type为La的记录,再和原数据集按Element字段合并,实现批量填充:
import pandas as pd # 构造原始数据集 df = pd.DataFrame({ 'Element': ['A', 'A', 'A', 'B', 'B', 'B'], 'Type': ['Ex', 'La', 'Bd', 'La', 'Ex', 'Ex'], 'Value': [5, 9, 0, 2, 7, 3] }) # 提取La对应的Value并重命名列 la_map = df[df['Type'] == 'La'][['Element', 'Value']].rename(columns={'Value': 'La'}) # 合并数据 df = df.merge(la_map, on='Element', how='left') print(df)
补充说明
由于每个Element对应的La类型仅存在唯一一条记录,两种方法都能稳定生成目标结果,无需处理重复值冲突。
内容的提问来源于stack exchange,提问作者TheDataPanda
相关产品推荐
相关产品推荐

