我想返回所有大于特定整数的值。但是,我有一个单独的列来确定应该大于多少。使用下面的df,如果Direction
是Right
,那么X
大于mainX
的所有行都应该返回。如果Direction
是Left
,那么应该返回小于X
的所有行。你知道吗
df = pd.DataFrame({
'Time' : ['09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.2','09:00:00.2','09:00:00.2','09:00:00.2','09:00:00.2','09:00:00.2'],
'Group' : ['I','J','I','J','I','J','I','J','I','J','I','J'],
'Label' : ['A','B','C','D','E','F','A','B','C','D','E','F'],
'X' : [8,4,3,8,7,4,7,3,3,4,6,1],
'Y' : [3,6,4,8,5,2,8,8,2,4,5,1],
'mainX' : [5,5,5,5,5,5,5,5,5,5,5,5],
'mainY' : [5,5,5,5,5,5,5,5,5,5,5,5],
'Direction' : ['Left','Right','Left','Right','Left','Right','Left','Right','Left','Right','Left','Right']
})
def greater(df):
for val in df['Direction']:
if val == 'Right':
Forward = df[df['X'] > df['mainX']]
elif val == 'Left':
Forward = df[df['X'] < df['mainX']]
else:
continue
return Forward
df1 = greater(df)
输出:
Time Group Label X Y mainX mainY Direction
1 09:00:00.1 J B 4 6 5 5 Right
2 09:00:00.1 I C 3 4 5 5 Left
5 09:00:00.1 J F 4 2 5 5 Right
7 09:00:00.2 J B 3 8 5 5 Right
8 09:00:00.2 I C 3 2 5 5 Left
9 09:00:00.2 J D 4 4 5 5 Right
11 09:00:00.2 J F 1 1 5 5 Right
预期:
Time Group Label X Y mainX mainY Direction
1 09:00:00.1 I C 3 4 5 5 Left
2 09:00:00.1 J D 8 8 5 5 Right
3 09:00:00.2 I C 3 2 5 5 Left
就像另一个答案一样使用布尔掩码,或者
query
使用pythonic条件将输出
设置条件并使用
loc
:相关问题 更多 >
编程相关推荐