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

如何在DataFrame中按父项匹配值填充子项的Time列?

解决方法:将父项Time值填充至同组所有子项

方法一:使用groupby + transform

先创建DataFrame,再按Parent分组,提取每个组中有效Time值(即Parent与Child匹配的行的Time),并将该值填充到整个组的Time列:

import pandas as pd

data = {
     'Parent' : ['a123', 'a123', 'a123', 'a123', 'a234', 'a234', 'a234', 'a234'],
     'Child' : ['a123', 'a1231', 'a1232', 'a1233', 'a2341', 'a234', 'a2342', 'a2343'],
     'Time' : [51, 0, 0, 0, 0, 39, 0, 0],
}

df = pd.DataFrame(data)

# 按Parent分组,将每个组的Time列替换为该组的有效Time值
df['Time'] = df.groupby('Parent')['Time'].transform(lambda x: x[x != 0].iloc[0])

方法二:构建映射表后批量替换

先提取每个Parent对应的有效Time值,再通过map方法将值批量映射到原DataFrame:

import pandas as pd

data = {
     'Parent' : ['a123', 'a123', 'a123', 'a123', 'a234', 'a234', 'a234', 'a234'],
     'Child' : ['a123', 'a1231', 'a1232', 'a1233', 'a2341', 'a234', 'a2342', 'a2343'],
     'Time' : [51, 0, 0, 0, 0, 39, 0, 0],
}

df = pd.DataFrame(data)

# 提取Parent与Child匹配的行,构建Parent到Time的映射
parent_time_map = df[df['Parent'] == df['Child']].set_index('Parent')['Time']

# 将映射值批量填充到Time列
df['Time'] = df['Parent'].map(parent_time_map)

验证结果

执行上述任意一种方法后,打印df即可得到预期结果:

Parent   Child  Time
0   a123    a123    51
1   a123   a1231    51
2   a123   a1232    51
3   a123   a1233    51
4   a234   a2341    39
5   a234    a234    39
6   a234   a2342    39
7   a234   a2343    39

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:31:00