如何使用 pandas 数据框函数维护样本条件下的某些行

How to maintain certain rows with conditions on a sample with pandas dataframe functions

我有一个这样的数据框:

  SeqNumber X  Y  Z
0  12        4  5  5
1  12        7  5  -8
2  13        10 2  1
3  16        4  8  7 
...     

我想在 X_min、X_max 和 Y_min、Y_max 之间的样本中将相应的 SeqNumbers 识别为正 Z 值,然后只保留整个数据帧上的那些 SeqNumbers。我如何使用 .loc 来做到这一点?

如果我定义 x_min = 3、x_max = 8、y_min = 4 和 y_max = 6。只会选择前两行。然后在这些行中,只有第一行有一个正 Z。所以为了结束我的问题,我想用第一行(之前选择的行)的 SeqNumber 维护所有行。这样,代码将产生一个数据框,其中包含原始

的前两行

使用 agg 计算 x_min、x_max、y_min、y_max 并搜索符合条件的行:

x_min = 3
x_max = 8
y_min = 4
y_max = 6

idx = df.loc[df['Z'].gt(0) & df['X'].between(x_min, y_max)
                            & df['Y'].between(y_min, y_max),
             'SeqNumber'].values

out = df.loc[df['SeqNumber'].isin(idx)]

输出:

>>> idx
array([12])

>>> out
   SeqNumber  X  Y  Z
0         12  4  5  5
1         12  7  5 -8