我想基于2列的条件按组进行行比较。这种情况
是:(col1(i)-col1(j))*(col2(i)-col2(j)) <= 0
,我们在其中比较col1和col2列中的每一行i与第j行。如果满足该组中所有行比较的条件,则将该组设置为true,否则设置为false。
data = {'group':['A', 'A', 'A', 'B', 'B', 'B'],
'col1':[1, 2, 3, 2, 3, 1], 'col2':[4, 3, 2, 2, 3, 1]}
df = pd.DataFrame(data)
df
有输出
A True
B False
答案 0 :(得分:2)
您可以使用 shift
与下一行进行比较,以及 groupby+all
来检查组中的所有项目是否为{{1} }:
True
cond=((df['col1']-df['col1'].shift(-1))*(df['col2']-df['col2'].shift(-1))<=0)&(df['group']==df['group'].shift(-1))
cond.groupby(df['group']).all()