我想在当前行之前添加一个基于行的速率列,就像diff()一样,但需要做一些计算,如下所示:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random((5,2)),columns=['v1','v2'])
print(df)
rate = []
rate.append(0)
prev = 0
for index, row in df.iterrows():
if index == 0:
prev = row
continue
r = (prev['v2'] - row['v2'])/(row['v1'] - prev['v1'])
prev = row
rate.append(r)
df['rate'] = rate
print(df)
当前的逻辑工作,在python中有什么更好的方法吗?
3条答案
按热度按时间btxsgosb1#
也许有更好的方法,但试试看:
iszxjhcz2#
这将基于前一行索引计算速率,并在发生时将Nan设置为0(零):
关于shift函数的更多信息。
ia2d9nvy3#
您可以使用pandas shift函数。
shift()
方法用于将数据移动一行,这允许您使用向量化操作轻松计算当前行和前一行之间的差异。然后使用
.iloc[0]
方法将第一行的速率设置为0。