Pandas 具有布尔值和整数的数据框的条件子集
Pandas conditional subset for dataframe with bool values and ints
我有一个包含三个系列的数据框。 A 列包含 group_id。 B 列包含 True 或 False。 C 列包含 1-n 排名(其中 n 是每个 group_id 的行数)。
我想为每一行存储此数据框的一个子集:
1) Column C == 1
OR
2) Column B == True
以下逻辑将我的旧数据帧行复制到新数据帧中:
new_df = df[df.column_b | df.column_c == 1]
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)]
哪个returns:
A B C
0 1 True 1
2 2 False 1
3 2 True 2
4 3 True 1
您有两种过滤方法,性能因数据大小而异
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
我有一个包含三个系列的数据框。 A 列包含 group_id。 B 列包含 True 或 False。 C 列包含 1-n 排名(其中 n 是每个 group_id 的行数)。
我想为每一行存储此数据框的一个子集:
1) Column C == 1
OR
2) Column B == True
以下逻辑将我的旧数据帧行复制到新数据帧中:
new_df = df[df.column_b | df.column_c == 1]
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)]
哪个returns:
A B C
0 1 True 1
2 2 False 1
3 2 True 2
4 3 True 1
您有两种过滤方法,性能因数据大小而异
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