Python DataFrame:给定多个列的条件,对其他一些列执行特定操作

Python DataFrame:给定多个列的条件,对其他一些列执行特定操作,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,给定数据帧: 将熊猫作为pd导入 将numpy作为np导入 分数=[[True,False,False,2,4,5,0,6,8,9,3,9], [假,真,假,3,6,2,8,9,3,2,3,0], [假,假,真,8,1,8,3,6,8,9,3,2]] df=pd.DataFrame(点、列=['1isObj'、'2isObj'、'3isOb', ‘X_1’、‘X_2’、‘X_3’、‘Y_1’、‘Y_2’、‘Y_3’、‘S_1’、‘S_2’、‘S_3’) 打印(df) SOBJ 2 SOBJ 3

给定数据帧:

将熊猫作为pd导入
将numpy作为np导入
分数=[[True,False,False,2,4,5,0,6,8,9,3,9],
[假,真,假,3,6,2,8,9,3,2,3,0],
[假,假,真,8,1,8,3,6,8,9,3,2]]
df=pd.DataFrame(点、列=['1isObj'、'2isObj'、'3isOb',
‘X_1’、‘X_2’、‘X_3’、‘Y_1’、‘Y_2’、‘Y_3’、‘S_1’、‘S_2’、‘S_3’)
打印(df)
SOBJ 2 SOBJ 3 ISOB X_1 X_2 X_3 Y_1 Y_2 Y_3 S_1 S_2 S_3
0对错错错245068939
1假真假3628932300
2假假假真8183668932
每行包含3个点x,y坐标及其速度。每一点都有一排目标。 我需要找到最快的时间,让其他点朝着目标前进

对于第0行: 点1是目标,位于(2,0),要找到时间,我们首先必须使用距离公式找到从2到1和从3到的距离:

time_2=np.sqrt(np.square(df['X_2']-df['X_1'])+np.square(df['Y_2']-df['Y_1'])/df['S_2']
查找2到1所需的时间。我们对3和1也这样做,取最小值为
'MinTime'
对于第1行,它将查找介于1到2和3到2之间的时间

对所有行执行此操作,并将其与原始数据帧一起返回

def最小时间(df):
df['MinTime']=#一些操作
返回df
问题: 这样做的一种方法是什么,它不涉及对所有行的For循环,这是非常低效的?
我正在处理超过100k行,目标点可以在行与行之间更改

您可以在数据帧中创建新列,然后按行获取这些列的最小值

df['time_2'] = np.sqrt(np.square(df['X_2']-df['X_1'])+np.square(df['Y_2']-df['Y_1']))/df['S_2']
df['time_3']= np.sqrt(np.square(df['X_3']-df['X_1'])+np.square(df['Y_3']-df['Y_1']))/df['S_3']

# Get the min between 'time_2' and 'time_3' for each row
df['MinTime']  = df[['time_2','time_3']].min(axis=1)

问题是,我正在处理100k+行的数据,并且目标点可能会因行而异。