问题描述
我试图取“角度最小值”和“角度最大值”列的平均值,然后将结果数据框中的每一行与单元格 D8 中的“角度转换系数”相乘。同样,我想对“最小扭矩”和“最大扭矩”执行相同的操作(获取平均值,然后将结果数据帧乘以单元格 E8 中的“扭矩转换系数”)。
这是我目前的代码:
import matplotlib.pyplot as plt
from matplotlib.pyplot import show,plot
import numpy as np
from scipy.signal import savgol_filter
import os
def Torque_Analysis(filename):
#Importing CSV Data and Defining 'AngleDF' and 'TorqueDF'
Angle_Data = ['Angle Min','Angle Max']
Torque_Data = ['Torque Min','Torque Max']
AngleCol = ['Angle Conversion Factor']
TorqueCol = ['Torque Conversion Factor']
AngleConvFactor = pd.read_csv(filename,skiprows=6,usecols = AngleCol,nrows = 1,engine='python')
TorqueConvFactor = pd.read_csv(filename,usecols = TorqueCol,engine='python')
AngleDF = pd.read_csv(filename,skiprows=17,usecols=Angle_Data,skipfooter=4,engine='python')
TorqueDF = pd.read_csv(filename,usecols=Torque_Data,engine='python')
#Calculating the average of 'Angle Min','Angle Max'
col = AngleDF.loc[:,'Angle Min':'Angle Max']
AngleDF['Angle Mean'] = col.mean(axis=1)
AngleDFmean= AngleDF['Angle Mean']
#Calculating the average of 'Torque Min','Torque Max'
col = TorqueDF.loc[:,'Torque Min':'Torque Max']
TorqueDF['Torque Mean'] = col.mean(axis=1)
TorqueDFmean= TorqueDF['Torque Mean']
#Multiplying Torque Mean values by Torque conversion factor
TorqueDFmean[:] = TorqueConvFactor * TorqueDFmean
#Multiplying Angle Mean values by Angle conversion factor
AngleDFmean[:] = AngleConvFactor * AngleDFmean
我一直收到错误
“ValueError:无法使用长度与值不同的切片索引器进行设置”。
解决方法
您的 AngleConcFactor
和 TorqueConvFactor
在您的代码中保持为 1x1 数据帧。
只需稍微清理一下您的函数即可满足您的需求:
def Torque_Analysis(filename):
Angle_Data = ['Angle Min','Angle Max']
Torque_Data = ['Torque Min','Torque Max']
AngleCol = ['Angle Conversion Factor']
TorqueCol = ['Torque Conversion Factor']
AngleConvFactor = pd.read_csv(filename,skiprows=6,usecols=AngleCol,nrows=1,engine='python').iat[0,0]
TorqueConvFactor = pd.read_csv(filename,usecols=TorqueCol,0]
AngleDF = pd.read_csv(filename,skiprows=17,usecols=Angle_Data,skipfooter=4,engine='python')
TorqueDF = pd.read_csv(filename,usecols=Torque_Data,engine='python')
AngleDF["Angle Mean"] = AngleDF[["Angle Min","Angle Max"]].mean(axis=1)*AngleConvFactor
TorqueDF["Torque Mean"] = TorqueDF[['Torque Min',"Torque Max"]].mean(axis=1)*TorqueConvFactor
请注意,我已使用 .iat[0,0]
将您的 1x1 DataFrame 转换为标量值。