Python 根据列的阈值删除行
使用elasticsearch对数据进行索引。输入文件多匹配查询为dob和姓氏。它有一个dob相同的学生。因此,该文件也将作为输出。有一个删除低分数行的想法。我怎样才能接近Python 根据列的阈值删除行,python,pandas,dataframe,Python,Pandas,Dataframe,使用elasticsearch对数据进行索引。输入文件多匹配查询为dob和姓氏。它有一个dob相同的学生。因此,该文件也将作为输出。有一个删除低分数行的想法。我怎样才能接近 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.4
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
或
假设您只需要分数大于
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
或
让我们试试基于
.std
的过滤
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
成为数据的动态阈值
在哪里,
((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
让我们试试基于
.std
的过滤
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
成为数据的动态阈值
在哪里,
((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这样的特定范围。如果假设输入文件不同,则表示无法进行训练。它应该比较所有问题并显示最高分数。@prem这些是你应该在问题中包含的细节。谢谢你编辑你的问题。我不想成为像分数>3这样的特定范围。如果假设输入文件不同,则表示无法进行训练。它应该比较所有问题并显示最高分数。@prem这些是你应该在问题中包含的细节。谢谢你编辑你的问题。