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

如何用对应分组的指定列数值之和替换DataFrame中的NA值?

解决DataFrame中连续NA值替换为分组Distance和的问题

我来帮你搞定这个需求!你需要把Distance2列里的连续NA值,替换成对应分组的Distance列数值之和,下面是具体的实现方案,完全匹配你的预期结果:

原始数据

Distance  Distance2
0       160        8.0
1        20        NaN
2        30       15.0
3       100       11.0
4        35        NaN
5        42        NaN
6        10        NaN
7        10        2.0
8         9        NaN
9        20        NaN

期望处理结果

Distance  Distance2
0       160        8.0
1        20       20.0
2        30       15.0
3       100       11.0
4        35       87.0
5        42       87.0
6        10       87.0
7        10        2.0
8         9       29.0
9        20       29.0

具体实现代码(基于pandas)

import pandas as pd
import numpy as np

# 1. 构造你的原始数据(如果已有数据可跳过这一步)
df = pd.DataFrame({
    'Distance': [160, 20, 30, 100, 35, 42, 10, 10, 9, 20],
    'Distance2': [8, np.nan, 15, 11, np.nan, np.nan, np.nan, 2, np.nan, np.nan]
})

# 2. 创建分组标识:以Distance2的非NA值为分隔,标记连续NA的分组
df['group'] = df['Distance2'].notna().cumsum()

# 3. 计算每个分组的Distance总和,并填充到Distance2的NA位置
df['Distance2'] = df['Distance2'].fillna(df.groupby('group')['Distance'].transform('sum'))

# 4. 移除临时的group列(可选操作)
df = df.drop('group', axis=1)

print(df)

代码逻辑解释

  • 分组标识创建:df['Distance2'].notna().cumsum()会把每一个Distance2非空的位置作为分组的起点,自动给连续的NA值分配同一个分组ID,比如第4-6行的NA会属于同一个分组,第8-9行的NA属于另一个分组。
  • 分组求和填充:通过groupby('group')['Distance'].transform('sum')计算每个分组的Distance总和,再用fillna()把Distance2的NA值替换成对应分组的总和,完美匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:27:34