我有一个数据框(df),其中变量Area代表区号。我需要找到Z后跟X的出现次数 在以下示例中,Z-> X重复两次,这意味着计数为2
Area
Z
A
B
Z
X
A
B
Z
X
我已尝试以下内容查找True / False
df.Area.str.contains(r'Z|X')
我确信这是错误的方法,因为它没有给我一个理想的结果。这样做的其他方式是什么?
答案 0 :(得分:3)
您需要shift()
功能,指定period
参数为-1
才能将系列向前移一步,这可以保证Z
后跟{X
1}}:
((df.Area == "Z") & (df.Area.shift(-1) == "X")).sum()
# 2
仔细研究shift
的工作原理:
df["Area_shift"] = df.Area.shift(-1)
df
# Area Area_shift
# 0 Z A
# 1 A B
# 2 B Z
# 3 Z X
# 4 X A
# 5 A B
# 6 B Z
# 7 Z X
# 8 X NaN