2017-07-16 79 views
1

我有一个表的记录找到最大值,看起来像这样:的Python - 基于条件

buyer=[name,value] 

这是可能的任何id有表中的几个记录:

Name Value 
E  10 
A  2 
D  4 
E  10 
A  5 
B  3 
B  10 
D  10 
C  4 

我我试图根据以下逻辑来过滤这个表:选择最大值不大于5的那些名字的所有记录。基于上面的例子,我将选择名字A和C的所有记录,因为它们的最大值是5和3分别为:

Name Value 
A  2 
A  5 
C  4 

B,D和E将被排除,因为它们的最大值是10(对于它们中的每一个)。

我该怎么做?只需使用pandas模块

+1

什么是您的*带*的记录表 - 一个CSV文件?一个数据帧? – RomanPerekhrest

+0

@RomanPerekhrest数据是一个Excel文件,但我知道如何在Python中加载它。它无论如何都是通过Python生成的,现在我只想对ti做一些额外的处理 –

回答

1

比方说,你的数据在test.csv文件。

import pandas as pd 

df = pd.read_csv("test.csv", delim_whitespace=True) 
idx = df.groupby('Name')['Value'].transform(max) <= 5 

print(df[idx]) 

输出:

Name Value 
1 A  2 
4 A  5 
8 C  4 

pandas.DataFrame.groupby