2015-10-17 109 views
0

我有一個數據框與三個系列。列A包含一個group_id。 B列包含True或False。列C包含1-n排名(其中n是每個group_id的行數)。熊貓條件子集的數據框與bool值和整數

我想存儲該數據幀的一個子集的每一行:

1) Column C == 1 
OR 
2) Column B == True 

下面的邏輯副本排我的老數據框列到新的數據幀:

new_df = df[df.column_b | df.column_c == 1] 

回答

0

IIUC從樣本數據幀開始,如:

A,B,C 
01,True,1 
01,False,2 
02,False,1 
02,True,2 
03,True,1 

您可以:

df = df[(df['C']==1) | (df['B']==True)] 

返回:

A  B C 
0 1 True 1 
2 2 False 1 
3 2 True 2 
4 3 True 1 
0

你幾個過濾和性能的方法變化的基礎上的數據的大小

In [722]: df[(df['C']==1) | df['B']] 
Out[722]: 
    A  B C 
0 1 True 1 
2 2 False 1 
3 2 True 2 
4 3 True 1 

In [723]: df.query('C==1 or B==True') 
Out[723]: 
    A  B C 
0 1 True 1 
2 2 False 1 
3 2 True 2 
4 3 True 1 

In [724]: df[df.eval('C==1 or B==True')] 
Out[724]: 
    A  B C 
0 1 True 1 
2 2 False 1 
3 2 True 2 
4 3 True 1