Python 从其他列计算Panda数据帧中的np.arange

Python 从其他列计算Panda数据帧中的np.arange,python,pandas,numpy,Python,Pandas,Numpy,我想创建一个新列,其中包含汽车到达某个目标所需的所有坐标。这应该是熊猫的一个列表 首先,我有以下几点: import pandas as pd cars = pd.DataFrame({'x_now': np.repeat(1,5), 'y_now': np.arange(5,0,-1), 'x_1_goal': np.repeat(1,5), 'y_1_

我想创建一个新列,其中包含汽车到达某个目标所需的所有坐标。这应该是熊猫的一个列表

首先,我有以下几点:

import pandas as pd

cars = pd.DataFrame({'x_now':    np.repeat(1,5),
                     'y_now':    np.arange(5,0,-1),

                     'x_1_goal': np.repeat(1,5),
                     'y_1_goal': np.repeat(10,5)})
产出将是:

     x_now  y_now  x_1_goal  y_1_goal
0      1      5         1        10
1      1      4         1        10
2      1      3         1        10
3      1      2         1        10
4      1      1         1        10
我试图添加这样的新列,但它不起作用

for xy_index in range(len(cars)):
    if cars.at[xy_index, 'x_now'] == cars.at[xy_index,'x_1_goal']:
        cars.at[xy_index, 'x_car_move_route'] = np.repeat(cars.at[xy_index, 'x_now'].astype(int),(
            abs(cars.at[xy_index, 'y_now'].astype(int)-cars.at[xy_index, 'y_1_goal'].astype(int))))
    else:
        cars.at[xy_index, 'x_car_move_route'] = \
            np.arange(cars.at[xy_index,'x_now'], cars.at[xy_index,'x_1_goal'],
                      (cars.at[xy_index,'x_1_goal'] - cars.at[xy_index,'x_now']) / (
                          abs(cars.at[xy_index,'x_1_goal'] - cars.at[xy_index,'x_now'])))
    
在最后,我想要列x_car_move_route和y_car_move_route,这样我就可以在它们需要通过的坐标上循环。我将用tkinter展示它。我还将添加更多的目标,因为这实际上只是他们需要完成的第一个回合

     x_now  y_now  x_1_goal  y_1_goal  x_car_move_route  y_car_move_route
0      1      5         1        10    [1,1,1,1,1]         [6,7,8,9,10]
1      1      4         1        10    [1,1,1,1,1,1]       [5,6,7,8,9,10] 
2      1      3         1        10    [1,1,1,1,1,1,1]     [4,5,6,7,8,9,10]
3      1      2         1        10    [1,1,1,1,1,1,1,1]   [3,4,5,6,7,8,9,10]
4      1      1         1        10    [1,1,1,1,1,1,1,1,1] [2,3,4,5,6,7,8,9,10]
您可以沿着
轴=1
执行类似于
route()
的功能,这意味着
route()
将接收来自
车辆的行。它根据传递到
var
(从
args
)的内容生成
x
y
坐标

您可以根据需要调整/修复,但这应该可以让您开始:

def路由(行,变量):
var2='y'如果var='x'其他'x'
现在,now2=row[f'{var}\u now'],row[f'{var2}\u now']
goal,goal2=行[f'{var}\u 1_goal'],行[f'{var2}\u 1_goal']
diff,diff2=目标-现在,目标2-现在2
如果差异==0:
result=np.array([now]*abs(diff2)).astype(int)
其他:
结果=1+np.arange(现在,目标,差异/绝对值(差异)).astype(int)
返回结果
cars['x_car_move_route']=cars.apply(路线,参数=('x',),轴=1)
cars['y\u car\u move\u route']=cars.apply(路线,参数=('y',),轴=1)

car\u move\u路线的
arange
间隔应该是什么意思?似乎总是1、-1或NaN:
(x1goal-xnow)/abs(x1goal-xnow)
汽车的移动路线是汽车将采用的所有路线。(x1goal-xnow)/abs(x1goal-xnow)应该是1或-1,因为我希望它移动到下一个x。不过,我知道我需要一种不同的方法来处理x_now和x_goal相同的情况。非常感谢你。它的作用是有害的。现在,我将学习调整它的真实数据。
   x_now  y_now  x_1_goal  y_1_goal     x_car_move_route      y_car_move_route
0      1      5         1        10          [1,1,1,1,1]          [6,7,8,9,10]
1      1      4         1        10        [1,1,1,1,1,1]        [5,6,7,8,9,10]
2      1      3         1        10      [1,1,1,1,1,1,1]      [4,5,6,7,8,9,10]
3      1      2         1        10    [1,1,1,1,1,1,1,1]    [3,4,5,6,7,8,9,10]
4      1      1         1        10  [1,1,1,1,1,1,1,1,1]  [2,3,4,5,6,7,8,9,10]