很难在Title中描述问题。让我举几个例子:
我有以下数据框
id value
asd123 2
asd123 4
asd124 15
asd124 32
asd125 2
asd125 3
asd126 5
asd126 14
asd126 22
asd127 7
asd127 17
asd127 30
asd128 23
asd128 28
asd129 3
asd130 25
asd131 56
asd132 3
asd133 53
我需要查找相同的id组和两列连续的值列大于5的值。(值列总是asc)如果它只是一条记录,它不需要查找差异价值。
我尝试为我的DF添加一个序列列:
id value sequence
asd123 2 1
asd123 4 2
asd124 15 1
asd124 32 2
asd125 2 1
asd125 3 2
asd126 5 1
asd126 14 2
asd126 22 3
asd127 7 1
asd127 17 2
asd127 30 3
asd128 23 1
asd128 28 2
asd129 3 1
asd130 25 1
asd131 56 1
asd132 3 1
asd133 53 1
基本上,如果sequence = 1记录,我可以删除,对于大于1的序列,我需要查找行之间的值列的差异,如果值差异大于5,我需要过滤掉那些记录。对于像3行的例子,我需要看两个连续的行和减去seq 2 - seq 1值和3-2,如果任何一个结果大于5,我将需要id。
提前谢谢。
df['sequence']=df.groupby('id').cumcount()
df_2=df[df['sequence']>=2]
答案 0 :(得分:1)
IIUC:
df.set_index('id').groupby(level=0).diff().query('value > 5').index.unique().tolist()
输出:
['asd124', 'asd126', 'asd127']