从一个参考列中减去所有列的简单方法。求和、平方并存储

2024-06-25 05:57:11 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我是减去所有关于参考列的列,然后求和并平方这个值。有一列名为ReferenceSpeedspeed1,speed2,speed3.....我只是通过使用循环遍历每行并进行此更新来减去ReferenceSpeed的所有速度(1,2,3…)。 然后求和并平方

我的Excel文件中的数据结构如下:

ReferenceSpeed  speed1 speed2 speed3 .... speedn
      63           78     56     87 ..........
      54           56     45     98
       .            .      .      .
       .            .      .       .
       .            .      .       .

我需要一个简单的方法来做这件事。也许是一个小功能

这是我的密码:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

speedlist=['ReferenceSpeed','speed1','speed2','speed3','speed4','speed5','speed6','speed7','speed8','speed9','speed10']

df = pd.read_csv('F:\\Python\\projects\\testdrivingcycles.csv',usecols=['position','ReferenceSpeed','speed1','speed2','speed3','speed4','speed5','speed6','speed7','speed8','speed9','speed10' ]) 

dict1={'ReferenceSpeed':0 ,'speed1':0 , 'speed2':0 ,'speed3':0 , 'speed4':0 ,'speed5':0 ,'speed6':0 , 'speed7':0 ,'speed8':0 ,'speed9':0 ,'speed10':0} 

for speed in speedlist: #to itrrate through col
    for ind in df.index: # to itrrate through rows and selects the data according to the index values.
        
        dict1[speed] = dict1[speed] + (df['ReferenceSpeed'][ind]-df[speed][ind]) # to subtract the difference

    dict1[speed] = dict1[speed] * dict1[speed] # to calculate square

print(dict1)

我的输出- {'ReferenceSpeed':0,'speed1':7056,'speed2':6400,'speed3':7225,'speed4':6561,'speed5':6241,'speed6':7056,'speed7':8281,'speed8':10201,'speed9':10609,'speed10':11025}


Tags: todfspeeddict1speed1speed2speed3speed10
1条回答
网友
1楼 · 发布于 2024-06-25 05:57:11

你不需要做所有的循环,这将是缓慢的。您已经在使用pandasnumpy,因此请利用它们提供的矢量化的操作

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('F:\\Python\\projects\\testdrivingcycles.csv',usecols=['position','ReferenceSpeed','speed1','speed2','speed3','speed4','speed5','speed6','speed7','speed8','speed9','speed10' ]) 

dict1 = np.square(df.loc[:,'ReferenceSpeed':].subtract(df.ReferenceSpeed, axis=0).sum()).to_dict()

print(dict1)

相关问题 更多 >