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

如何在Pandas中根据D列条件用对应E值计算填充新列F?

解决方案

核心思路

按C列分组处理:

  • 对C3分组,直接将F列填充为nan
  • 对C1、C2分组,先定位该组内D=1对应的E值,再用该值乘以组内所有D列值得到F列

完整代码示例

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'C': ['C1', 'C1', 'C1', 'C2', 'C2', 'C3', 'C3'],
    'D': [0.5, 1, 0.8, 0.3, 1, 0.6, 0.7],
    'E': [np.nan, 2.4, np.nan, np.nan, 3.1, np.nan, np.nan]
})

# 定义分组处理函数
def process_group(group):
    group_name = group['C'].iloc[0]
    if group_name == 'C3':
        group['F'] = np.nan
    else:
        # 获取当前分组中D=1对应的E值
        e_value = group.loc[group['D'] == 1, 'E'].iloc[0]
        # 计算F列
        group['F'] = group['D'] * e_value
    return group

# 应用分组处理
df = df.groupby('C', group_keys=False).apply(process_group)

print(df)

输出结果

C    D    E     F
0  C1  0.5  NaN  1.20
1  C1  1.0  2.4  2.40
2  C1  0.8  NaN  1.92
3  C2  0.3  NaN  0.93
4  C2  1.0  3.1  3.10
5  C3  0.6  NaN   NaN
6  C3  0.7  NaN   NaN

原代码问题分析

你之前的代码存在两个关键问题:

  1. 未按C列分组处理,无法针对C1/C2和C3分别执行逻辑
  2. 切片操作([:-2])和索引引用逻辑混乱,没有精准定位到每个分组内的D=1对应的E值,导致计算逻辑不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:50:09