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

Python新手求助:将DataFrame特定单元格值复制到对应列

解决DataFrame按Process分组复制对应type值到列的问题

示例输入

ProcesstypevaluePVRHonoCivel
123456PVR$5$0$0$0
123456Civel$17$0$0$0
123456Hono$2$0$0$0
145Civel$457$0$0$0
8547Civel$47$0$0$0
8547PVR$88$0$0$0
3333PVR$74$0$0$0

期望输出

ProcesstypevaluePVRHonoCivel
123456PVR$5$5$17$2
123456Civel$17$5$17$2
123456Hono$2$5$17$2
145Civel$457$0$0$457
8547Civel$47$88$0$47
8547PVR$88$88$0$47
3333PVR$74$74$0$0

解决方案(Python pandas)

用pandas可以快速实现这个需求,步骤如下:

  1. 导入pandas库,构造或读取你的DataFrame
import pandas as pd

# 从文件读取数据的话,替换成下面的代码(示例为csv格式):
# df = pd.read_csv('你的数据文件路径.csv')

# 构造和示例一致的输入数据
data = {
    'Process': [123456, 123456, 123456, 145, 8547, 8547, 3333],
    'type': ['PVR', 'Civel', 'Hono', 'Civel', 'Civel', 'PVR', 'PVR'],
    'value': ['$5', '$17', '$2', '$457', '$47', '$88', '$74'],
    'PVR': ['$0']*7,
    'Hono': ['$0']*7,
    'Civel': ['$0']*7
}
df = pd.DataFrame(data)
  1. 按Process分组,提取每组内type和value的对应关系
# 每个Process会生成一个字典,比如123456对应的字典是{'PVR':'$5', 'Civel':'$17', 'Hono':'$2'}
grouped_map = df.groupby('Process').apply(
    lambda x: x.set_index('type')['value'].to_dict()
).reset_index(name='type_value_map')
  1. 合并映射并填充目标列
# 把分组后的映射合并回原DataFrame
df = df.merge(grouped_map, on='Process')

# 遍历PVR、Hono、Civel列,从映射字典中取值,无对应值则保留$0
for col in ['PVR', 'Hono', 'Civel']:
    df[col] = df['type_value_map'].apply(lambda x: x.get(col, '$0'))

# 删除临时的映射列
df = df.drop('type_value_map', axis=1)
  1. 查看结果
    运行代码后,df就是你需要的期望输出,直接打印或保存即可:
print(df)

关键逻辑说明

  • 分组生成的字典是核心:它把同一个Process下不同type对应的value统一存储,方便批量填充
  • dict.get(col, '$0')的作用:如果字典里有当前列对应的value就取出,没有则用$0代替,完全匹配你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:50:48