我想根据两列的条件按组进行行比较。这个条件
是:(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
最佳答案
您可以使用shift
与下一行以及 groupby+all
进行比较 用于检查组中的所有项目是否为 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()
group
A True
B False
dtype: bool
关于python - Pandas:根据两列的条件按组进行行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264336/