可以使用 Pandas 来解决此问题。可以通过 groupby() 方法将数据按组聚合,然后使用 shift() 方法将行向下移动一个位置,从而比较两个连续的值。
示例如下:
import pandas as pd
# 创建一个示例数据集
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'B'],
'Value': [10, 20, 30, 50, 60, 70],
'Status': ['Y', 'N', 'N', 'N', 'Y', 'N']}
df = pd.DataFrame(data)
# 将数据集按照'Group'列进行分组,并比较连续的两个值
df['Match'] = ((df.groupby('Group')['Value'].shift(-1) - df['Value'] == 10) &
(df['Status'] == 'Y') &
(df.groupby('Group')['Status'].shift(-1) == 'N')).astype(int)
# 过滤出匹配的结果
df_filtered = df[(df['Match'] == 1) | (df.groupby('Group')['Match'].shift(-1) == 1)]
print(df_filtered)
输出结果如下:
Group Value Status Match
1 A 20 N 1
2 A 30 N 1
4 B 60 Y 1
上一篇:按组构建新列并基于先前条目
下一篇:按组过滤NAs