是否有一种有效的方法来更新DataFrame中的每一行,并按顺序更新其下方的行?
DataFrame包含车辆按顺序行进的一系列位置。我添加了两个新列next_x
和next_y
,并希望逐行填充这些列,直接使用行中current_x
和current_y
列中的值下面。然后每行的想法将包含描述位置的坐标对和车辆行进的下一个位置。
这是使用iterrows
工作,但在整个数据集上速度过慢。
for index, row in df.iterrows():
if int(index) < len(df)-1:
df['next_x'].iloc[int(index)] = df['current_x'].iloc[(int(index)+1)]
df['next_y'].iloc[int(index)] = df['current_y'].iloc[(int(index)+1)]
我无法找到使用apply
的好方法 - 我错过了什么?
答案 0 :(得分:1)
试试这个:
df[['next_x', 'next_y']] = df[['current_x', 'current_y']].shift(-1)
答案 1 :(得分:1)
你正在寻找熊猫的“转变”。
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),columns=['a', 'b', 'c', 'd', 'e'])
df.shift(1)会给你所有向下移动的行。
然后你只需要:
df- df.shift(1)
祝你好运!