Skip to main content
 首页 » 编程设计

python之根据列的阈值删除行

2025年05月04日13傻小

用 elasticsearch search 索引数据。输入文件多匹配查询是dob和last name。它有相同的学生。因此该文件也作为输出。有关于删除低分行的想法。我该如何接近?

Filename Name      DOB         Score PageNumber 
11086   Ram     11 06 1930  6.4504585   1 
11086   Ram     11 06 1930  6.4504585   2 
11086   Ram     11 06 1930  6.4504585   1 
81564   Kiran   11 06 1930  3.5517883   2 
81564   Kiran   11 06 1930  3.5517883   33 
81564   Kiran   11 06 1930  3.5517883   12 
754133  peter   11 06 1930  2.5905614   1 
754133  peter   11 06 1930  2.5905614   1 

期望的输出

Filename Name      DOB         Score PageNumber 
11086   Ram     11 06 1930  6.4504585   1 
11086   Ram     11 06 1930  6.4504585   2 
11086   Ram     11 06 1930  6.4504585   1 

请您参考如下方法:

假设您只需要得分大于 3

的行
df.query('Score > 3') 
 
   Filename   Name         DOB     Score  PageNumber 
0     11086    Ram  11 06 1930  6.450458           1 
1     11086    Ram  11 06 1930  6.450458           2 
2     11086    Ram  11 06 1930  6.450458           1 
3     81564  Kiran  11 06 1930  3.551788           2 
4     81564  Kiran  11 06 1930  3.551788          33 
5     81564  Kiran  11 06 1930  3.551788          12 

假设你想按标准差的倍数过滤

df[df.Score > (df.Score.mean() - 1 * df.Score.std())] 
 
   Filename   Name         DOB     Score  PageNumber 
0     11086    Ram  11 06 1930  6.450458           1 
1     11086    Ram  11 06 1930  6.450458           2 
2     11086    Ram  11 06 1930  6.450458           1 
3     81564  Kiran  11 06 1930  3.551788           2 
4     81564  Kiran  11 06 1930  3.551788          33 
5     81564  Kiran  11 06 1930  3.551788          12 

或者你可以只抓取等于最大值的行

df.query('Score == @df.Score.max()') 
 
   Filename   Name         DOB     Score  PageNumber 
0     11086    Ram  11 06 1930  6.450458           1 
1     11086    Ram  11 06 1930  6.450458           2 
2     11086    Ram  11 06 1930  6.450458           1 

或者

df[df.Score == df.Score.max()] 
 
   Filename   Name         DOB     Score  PageNumber 
0     11086    Ram  11 06 1930  6.450458           1 
1     11086    Ram  11 06 1930  6.450458           2 
2     11086    Ram  11 06 1930  6.450458           1