【发布时间】:2021-11-11 16:15:27
【问题描述】:
这个问题与我之前发布的问题非常相似,只是做了一处改动。除了对所有列进行绝对差异之外,我还想找到“Z”列的幅度差异,所以如果当前 Z 比 prev 大 1.1 倍,则保留它。
(问题的更多背景)
Pandas using the previous rank values to filter out current row
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 的行,排名 2 中的任意行具有 x = (-1-1)、y = (-1-1)、z= (
【问题讨论】:
-
您能否提出更正式的过滤条件?
-
每个等级的行数总是相同吗?
-
@onepan 不,不同的等级可以有不同的行数