首页 > 解决方案 > 如何使用 pandas 数据框函数在样本上维护具有条件的某些行

问题描述

我有一个这样的数据框:

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

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

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

标签: pythonpandaspoint-clouds

解决方案


计算 x_min、x_max、y_min、y_maxagg并搜索符合条件的行:

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

推荐阅读