python - Pandas:根据两列的条件按组进行行比较

标签 python pandas

我想根据两列的条件按组进行行比较。这个条件 是:(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/

相关文章:

python - CSS 选择器没有选择?

python - Pandas 如何阅读子标题

python - Git 子模块在 python 项目中使用后会引发导入错误

python - 如何登录网站并打印源代码?

python - to_sql 中可能存在 AttributeError 错误

python - Pandas groupby 并聚合到新列

python - Pandas - 用相应的 id 列值填充缺失的列值

python - Pandas - 如何将字符串列转换为整数...然后转换为 10 个字符的字符串

python - 分析python中libsvm的预测模型

python - 从列表中的值查找字符串中文本的第一个实例