熊猫:基于2列的条件按组进行行比较

时间:2020-02-17 14:11:56

标签: python pandas

我想基于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

1 个答案:

答案 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()