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

如何筛选Q=1且haul为corto的DataFrame数据并处理对应em列?

解决方案

步骤1:筛选Q=1的数据行

先把DataFrame过滤到仅保留Q=1的记录:

# 假设你的DataFrame名为df
df_q1 = df[df['Q'] == 1].copy()  # 用copy避免SettingWithCopyWarning

步骤2:批量将非corto对应的em字段设为NaN

因为haul1对应em1、haul2对应em2……以此类推,我们可以循环处理每一组对应字段,把haul值不等于corto的行,对应的em列设为NaN:

# 遍历1到5的索引,配对haul和em字段
for i in range(1, 6):
    haul_col = f'haul{i}'
    em_col = f'em{i}'
    # 定位haul值不是corto的行,把对应em设为NaN
    df_q1.loc[df_q1[haul_col] != 'corto', em_col] = float('nan')

步骤3:对em列求和

现在可以直接对em列按行求和,skipna=True会自动忽略NaN值:

df_q1['em_total'] = df_q1[['em1', 'em2', 'em3', 'em4', 'em5']].sum(axis=1, skipna=True)

为什么你之前的方法没生效?

你提到用.loc结合不等运算符只得到全为corto的行,应该是错误地用过滤行的方式(比如df.loc[df[haul_cols] == 'corto']),而不是定位行后修改对应em列的值。上面的方法是先保留所有Q=1的行,再针对每一组haul/em,把不符合条件的em值置空,而不是删除行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:10