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

基于DataFrame列条件计算新增列F的Python实现求助

问题解决:基于DataFrame特定行的值批量计算新列F

需求说明

给现有DataFrame新增一列F,规则如下:

  • 找到D列值等于1的行,提取该行对应的E列值(示例中为2.4)
  • 所有行的F列值 = 对应行的D列值 × 上述提取到的E值
  • 若D列为无效值(示例中的-),则F列为nan

示例DataFrame:

A     B       C        D            E          F
---   ---     ---      ---         ---        ---
C1    b1      10.2     1.34         0         1.34*2.4
C1    b2      11.2     0.78         0         0.78*2.4
C1    b3      13.12    1.02         0         1.02*2.4
C2    b4      11.90    0.89         0         0.89*2.4
C2    b5      12.33    1           2.4        1*2.4
C3    b6      43.90     -          3.2        nan

你尝试的代码存在索引范围错误和逻辑漏洞:

g["F"][:-2] = np.where(g["D"][-2:] == 1, g["D"][:-2]*G["E])

解决方案

步骤1:预处理D列,提取目标E值

先将D列的无效值转为数值型NaN,再定位D=1的行获取对应的E值:

import pandas as pd

# 处理D列的非数值内容,转为NaN
g['D'] = pd.to_numeric(g['D'], errors='coerce')

# 提取D=1对应的E值(假设仅存在一行D=1,多行可根据需求调整逻辑)
target_e = g.loc[g['D'] == 1, 'E'].iloc[0]

步骤2:计算生成F列

直接用D列乘以目标E值,NaN会自动传递到F列:

g['F'] = g['D'] * target_e

完整代码示例

import pandas as pd

# 构造示例DataFrame
data = {
    'A': ['C1', 'C1', 'C1', 'C2', 'C2', 'C3'],
    'B': ['b1', 'b2', 'b3', 'b4', 'b5', 'b6'],
    'C': [10.2, 11.2, 13.12, 11.90, 12.33, 43.90],
    'D': [1.34, 0.78, 1.02, 0.89, 1, '-'],
    'E': [0, 0, 0, 0, 2.4, 3.2]
}
g = pd.DataFrame(data)

# 预处理D列
g['D'] = pd.to_numeric(g['D'], errors='coerce')

# 获取目标E值
target_e = g.loc[g['D'] == 1, 'E'].iloc[0]

# 计算F列
g['F'] = g['D'] * target_e

print(g)

输出结果

A   B      C     D    E     F
0  C1  b1  10.20  1.34  0.0  3.216
1  C1  b2  11.20  0.78  0.0  1.872
2  C1  b3  13.12  1.02  0.0  2.448
3  C2  b4  11.90  0.89  0.0  2.136
4  C2  b5  12.33  1.00  2.4  2.400
5  C3  b6  43.90   NaN  3.2    NaN

补充说明

  • 若DataFrame中存在多行D=1,可根据需求调整target_e的获取逻辑,比如取平均值:target_e = g.loc[g['D'] == 1, 'E'].mean()
  • 代码通过pd.to_numeric统一处理D列的非数值内容,确保后续计算逻辑的一致性

内容的提问来源于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 08:17:28