2017-07-16 76 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