我有两个数据帧,LP_pos
和vel
,其中LP_pos
包含用于计算速度的位置数据,这些数据将进入第二个数据帧。
我想使用np.gradient()
来计算df每行的速度,方法是遍历df1的列并在df2中创建新的列,并使用以梯度计算的信息。这就是我到目前为止所拥有的
# create a new column for velocity
def vel(df1, df2):
for col in df1:
df2[col + '_vel'] = np.gradient(df1[col], df1['Time'])
return df2
vel(LP_pos, vel)
但是我收到此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-c69328603d12> in <module>
5 return df2
6
----> 7 vel(LP_pos, vel)
<ipython-input-14-c69328603d12> in vel(df1, df2)
2 def vel(df1, df2):
3 for col in df1:
----> 4 df2[col + '_vel'] = np.gradient(df1[col], df1['Time'])
5 return df2
6
TypeError: 'function' object does not support item assignment
有人可以帮我吗?
样本数据:
Time X Y Z
0 0.00 0.245740 0.204112 0.168514
1 0.01 0.245737 0.204115 0.168523
2 0.02 0.245732 0.204117 0.168532
3 0.03 0.245723 0.204118 0.168541
所需的输出:
Time X_vel Y_vel Z_vel
0 0.00 grad(X1) grad(Y1) grad(Z1)
1 0.01 grad(X2) grad(Y2) ...
2 0.02 grad(X3) ... ...
3 0.03 grad(X4) ... ...
答案 0 :(得分:1)
您的第二个数据框与您的函数(vel
)具有相同的名称,因此隐藏了此数据框。只需为第二个数据框或您的函数使用另一个名称,例如
def calculate_vel(df1, df2):
for col in df1:
df2[col + '_vel'] = np.gradient(df1[col], df1['Time'])
return df2
calculate_vel(LP_pos, vel)