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

如何在Pandas中定位满足条件的第二行并创建指定新列

如何仅在满足条件的第二行标记'x'?

给定如下Pandas DataFrame:

import pandas as pd
df = pd.DataFrame({'a': [20, 21, 333, 444], 'b': [20, 20, 20, 20]})

定义掩码:

mask = (df.a >= df.b)

需求是仅在满足该掩码条件的第二行添加标记'x',期望输出:

a   b    c
0   20  20  NaN
1   21  20    x
2  333  20  NaN
3  444  20  NaN  

原代码df.loc[mask.cumsum().ne(1) & mask, 'c'] = 'x'会给所有满足条件的首行之后的行都标记'x',不符合需求。

解决方案

可以通过精准定位满足条件的第二行来实现:

方法一:直接定位目标索引

# 初始化c列为空值
df['c'] = pd.NA
# 获取所有满足mask的行的索引,取第二个元素(对应第二行)
target_idx = mask[mask].index[1]
# 给目标行赋值'x'
df.loc[target_idx, 'c'] = 'x'

方法二:利用累加计数筛选

df['c'] = pd.NA
# 筛选累加计数等于2的行(即满足条件的第二行)
df.loc[mask.cumsum() == 2, 'c'] = 'x'

解释

  • mask.cumsum()会对满足条件的行做累加计数:满足条件的第一行计数为1,第二行为2,后续满足条件的行依次递增。
  • 直接筛选mask.cumsum() == 2就能精准定位到目标行,避免了原代码中ne(1)匹配所有后续满足条件行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:45:36