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]