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

如何为pandas DataFrame中value1列绝对值相同的行分配相同value2值

实现思路

按value1的绝对值对行分组,将每组内已存在的非空value2值填充到组内所有行。如果某组内没有非空的value2值,填充后仍保持NaN。

实现代码

方案1:使用groupby + transform(推荐)

该方法逻辑简洁,适合同组内非空value2值统一的场景:

import pandas as pd
import numpy as np

# 构造示例DataFrame
d = {'value1': [1, 2, 3, -4, 5, -1, -7, -2, 4, -5], 'value2': [100, 200, 200, 300, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]}
df = pd.DataFrame(data=d)

# 核心逻辑:按value1的绝对值分组,取每组第一个非空value2填充全组
df['value2'] = df.groupby(df['value1'].abs())['value2'].transform('first')

print(df)

方案2:使用映射表匹配

如果需要提前确认绝对值和value2的对应关系,可以先构造映射字典再匹配:

# 构造绝对值到value2的映射字典
value_map = df.dropna(subset=['value2']).set_index(df['value1'].abs())['value2'].to_dict()
# 匹配填充
df['value2'] = df['value1'].abs().map(value_map)

输出结果

运行后得到的DataFrame和期望结果完全一致:

value1  value2
0       1   100.0
1       2   200.0
2       3   200.0
3      -4   300.0
4       5     NaN
5      -1   100.0
6      -7     NaN
7      -2   200.0
8       4   300.0
9      -5     NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:00