首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列的阈值删除行

根据列的阈值删除行
EN

Stack Overflow用户
提问于 2017-09-13 06:29:19
回答 2查看 2.5K关注 0票数 1

使用elasticsearch搜索将数据编入索引。输入文件多匹配查询是道布和姓。它有和道布一样的学生。所以这个文件也是作为输出来的。有一个想法,即将删除低得分行。我怎么才能接近?

代码语言:javascript
复制
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

期望输出

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-13 06:39:57

让我们试试基于.std的过滤。

代码语言:javascript
复制
df = df[~((df.Score - df.Score.max()).abs() > df.Score.std())]
df

   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

Score.std成为数据的动态阈值。

哪里,

代码语言:javascript
复制
((df.Score - df.Score.max()).abs())

0    0.000000
1    0.000000
2    0.000000
3    2.898670
4    2.898670
5    2.898670
6    3.859897
7    3.859897
Name: Score, dtype: float64

df.Score.std()
1.7451830491923459

df.Score.max()
6.4504584999999999
票数 3
EN

Stack Overflow用户

发布于 2017-09-13 06:34:37

假设您只想要得分大于3的行

代码语言:javascript
复制
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

假设你想要用标准偏差的倍数进行过滤

代码语言:javascript
复制
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

或者,您可以只获取与最大值相等的行。

代码语言:javascript
复制
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

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46190318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档