这个问题与我之前发布的问题非常相似,只有一个变化。除了对所有列进行绝对差异之外,我还想查找“Z”列的幅度差异,因此,如果当前的Z比先前的值大1.1倍,则保留它。
(问题的更多背景信息)
参考链接:Pandas使用以前的排名值来过滤当前行
(问题的更多背景信息)
参考链接:Pandas使用以前的排名值来过滤当前行
df = pd.DataFrame({
'rank': [1, 1, 2, 2, 3, 3],
'x': [0, 3, 0, 3, 4, 2],
'y': [0, 4, 0, 4, 5, 5],
'z': [1, 3, 1.2, 3.25, 3, 6],
})
print(df)
# rank x y z
# 0 1 0 0 1.00
# 1 1 3 4 3.00
# 2 2 0 0 1.20
# 3 2 3 4 3.25
# 4 3 4 5 3.00
# 5 3 2 5 6.00
这是我希望输出的结果
output = pd.DataFrame({
'rank': [1, 1, 2, 3],
'x': [0, 3, 0, 2],
'y': [0, 4, 0, 5],
'z': [1, 3, 1.2, 6],
})
print(output)
# rank x y z
# 0 1 0 0 1.0
# 1 1 3 4 3.0
# 2 2 0 0 1.2
# 5 3 2 5 6.00
我希望发生的情况是,如果前一个等级中有任何行具有x、y(两边都±1)和z(<1.1z),则将其删除。
因此,对于排名1的行,在排名2中具有任何x = (-1-1)、y = (-1-1)、z=(<1.1)或x=(2-5)、y=(3-5)、z=(<3.3)组合的行都应该被删除。