如何在 Pandas Dataframe 中计算速度

阿里夫

我的数据有问题。我想根据“速度方程”分析速度。

在此处输入图片说明

我的数据是这样的:

df

MAC T_1 X_1 Y_1 T_2 X_2 Y_2 T_3 X_3 Y_3 T_4 X_4 Y_4 T_5 X_5 Y_5 T_6 X_6 Y_6 T_7 X_7 Y_7
ID1 1   1   1   1   1   1   2   1   2   3   1   3   3   1   3   4   1   4   5   1   5
ID2 6   2   5   6   2   5   7   3   5   7   3   5   8   4   5   9   5   5   10  5   4
ID3 1   1   1   2   1   2   3   1   3   3   1   3   4   1   4   5   1   5   6   2   5

我尝试用我的代码计算速度,如下所示:

df = pd.read_csv("data.csv") #read data
def v_2(i):
     return (df.ix[x,(5+3*(i-1))]-df.ix[x,(2+3*(i-1))])**2 + (df.ix[x,(6+3*(i-1))]-df.ix[x,(3+3*(i-1))])**2

def v(i):
    if (df.ix[x,(4+3*(i-1))]-df.ix[x,(1+3*(i-1))]) ==0:
       return 0
    else:
        return math.sqrt(v_2(i)) / (df.ix[x,(4+3*(i-1))]-df.ix[x,(1+3*(i-1))]) 
for i in range(1,7):
    for x in range(3):
        v_2(i)
        v(i)
        print((f"v:{v(i)}",f"i:{i+1}",f"ID:{x+1}"))

当前结果显示如下:

('v:0', 'i:2', 'ID:1')
('v:0', 'i:2', 'ID:2')
('v:1.0', 'i:2', 'ID:3')
('v:1.0', 'i:3', 'ID:1')
('v:1.0', 'i:3', 'ID:2')
('v:1.0', 'i:3', 'ID:3')
('v:1.0', 'i:4', 'ID:1')
('v:0', 'i:4', 'ID:2')
('v:0', 'i:4', 'ID:3')
('v:0', 'i:5', 'ID:1')
('v:1.0', 'i:5', 'ID:2')
('v:1.0', 'i:5', 'ID:3')
('v:1.0', 'i:6', 'ID:1')
('v:1.0', 'i:6', 'ID:2')
('v:1.0', 'i:6', 'ID:3')
('v:1.0', 'i:7', 'ID:1')
('v:1.0', 'i:7', 'ID:2')
('v:1.0', 'i:7', 'ID:3')

我的预期结果变成了pd.Dataframe这样:

MAC V1  V2  V3  V4  V5  V6
ID1 0   1   1   0   1   1
ID2 0   1   0   1   1   1
ID3 1   1   0   1   1   1

你介意帮助我如何转换我的数据或更好的方法来分析速度。先感谢您。

您可以将代码的最后一部分替换为:

rows =[]
for i in range(1, 7):
    for x in range(3):
        v_2(i)
        v(i)
        row = [v(i), i+1, x+1]
        rows.append(row)
df1 = pd.DataFrame(rows, columns=['v', 'i', 'ID'])
df2 = pd.pivot_table(df1, values = 'v', index=['ID'], columns = 'i').reset_index()
df2.columns = ['MAC','V1','V2','V3','V4','V5','V6']
df2.set_index('MAC', inplace=True)
print df2

输出:

      V1   V2   V3   V4   V5   V6
MAC                              
1    0.0  1.0  1.0  0.0  1.0  1.0
2    0.0  1.0  0.0  1.0  1.0  1.0
3    1.0  1.0  0.0  1.0  1.0  1.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章