假设有一个包含连续行的DataFrame,如下所示:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 6, 7, 8, 12, 13]})
要按照相邻行进行分组,可使用shift
函数实现。
# 将df的'A'列向下移动一行
df_shifted = df.shift(1)
# 计算'A'列减去df_shifted的'A'列,
# 相邻行的值不同,将返回1,否则返回0
df_diff = df['A'] - df_shifted['A']
# 查找'A'列中相邻行值不连续的位置
group_index = (df_diff != 1).cumsum()
# 按照group_index进行分组并输出结果
df_grouped = df.groupby(group_index)
for index, group in df_grouped:
print('Group', index, ':')
print(group)
输出结果:
Group 1 :
A
0 1
1 2
2 3
Group 2 :
A
3 6
4 7
5 8
Group 3 :
A
6 12
7 13
第一组包含了连续的前三行,第二组包含了连续的中间三行,第三组包含了连续的最后两行。
上一篇:按连续相等值分组排序
下一篇:按连续元素拆分/分组收集