如何在Pandas中标记目标字符串之后的所有Series元素为True?
实现方法
你可以通过两种简洁的方式实现需求:
方法一:定位目标索引后生成布尔序列
先找到目标值的首次出现位置,再通过索引比较生成结果:
import pandas as pd # 原始Series s = pd.Series({0: 'registration address-complement-insert-confirmation input', 1: 'decision-tree first-interaction-validation options', 2: 'decision-tree invalid-format-validation options', 3: 'decision-tree first-interaction-validation options', 4: 'registration address-complement-request view', 5: 'onboarding return-start origin', 6: 'registration address-complement-request origin', 7: 'decision-tree identified-regex options', 8: 'decision-tree first-interaction-validation options', 9: 'decision-tree first-interaction-validation options'}) # 获取目标值的首次出现索引 target_index = s.eq('onboarding return-start origin').idxmax() # 生成结果:索引大于等于目标索引的标记为True result = pd.Series(s.index >= target_index, index=s.index)
方法二:用累积求和直接生成标记
这种方法更简洁,无需单独提取索引,利用累积求和的特性自动标记后续元素:
import pandas as pd # 原始Series s = pd.Series({0: 'registration address-complement-insert-confirmation input', 1: 'decision-tree first-interaction-validation options', 2: 'decision-tree invalid-format-validation options', 3: 'decision-tree first-interaction-validation options', 4: 'registration address-complement-request view', 5: 'onboarding return-start origin', 6: 'registration address-complement-request origin', 7: 'decision-tree identified-regex options', 8: 'decision-tree first-interaction-validation options', 9: 'decision-tree first-interaction-validation options'}) # 先创建仅目标位置为True的掩码 target_mask = s == 'onboarding return-start origin' # 累积求和后转布尔值,首次出现目标值后所有位置都会被标记为True result = target_mask.cumsum().astype(bool)
两种方法都能得到你预期的布尔Series结果,方法二更适合快速实现,逻辑也更紧凑。
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

