如何用Pandas高效标记DataFrame中关键词分隔的分段
用Pandas高效标记DataFrame分段的方法
需求:现有含字符串的DataFrame列A,需新建列B,以关键词hi为分隔,对hi之间的内容进行递增标记,示例效果如下:
A B
hi
a 1
b 1
hi
d 2
f 2
g 2
hi
直接用Pandas的布尔累加就能高效实现,步骤如下:
- 先构造示例DataFrame(已有数据可跳过此步):
import pandas as pd df = pd.DataFrame({'A': ['hi', 'a', 'b', 'hi', 'd', 'f', 'g', 'hi']})
- 核心处理代码:
# 标记`hi`的位置并计算累加和,生成初始标记 df['B'] = df['A'].eq('hi').cumsum() # 清空`hi`所在行的标记值 df.loc[df['A'] == 'hi', 'B'] = ''
原理说明
df['A'].eq('hi')生成布尔序列,hi对应True(等价于1),其他值对应False(等价于0);cumsum()对布尔序列累加,每遇到一次hi,累加值就加1,后续行继承当前累加值,正好对应分段的递增标记;- 最后通过
loc定位hi所在行,将其B列设为空,完全匹配需求效果。
运行后得到的DataFrame如下:
A B 0 hi 1 a 1 2 b 1 3 hi 4 d 2 5 f 2 6 g 2 7 hi
内容的提问来源于stack exchange,提问作者preshyboy
相关产品推荐
相关产品推荐

