如何使用 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
我有一个这样的数据框:
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