我在循环中的另一个函数内运行一个函数,当第一个模块(Mod1)使用第二个模块(Mod2)中定义的值来生成名为Overall的等式的结果时出现问题。
返回的错误是:TypeError:'numpy.float64'对象不能解释为整数
代码如下
def Mod1(A,
B,
C):
As = pd.read_csv('AProps.csv',index_col='AName')
As = As.dropna(0,how='all',thresh=None,subset=None,inplace=False)
AvailAs = As.index.tolist()
Bs = pd.read_csv('BProps.csv',index_col='BName')
Bs = Matrices.dropna(0,how='all',thresh=None, subset=None,inplace=False)
AvailBs = Bs.index.tolist()
Prop1_A = As['Prop1'][A]
Prop2_A = As['Prop2'][A]
Prop3_A = As['Prop3'][A]
Prop4_A = Prop1_A/(2*(1+Prop3_A))
Prop1_B = Bs['Prop1'][B]
Prop3_B = Bs['Prop3'][B]
Prop4 = Prop1_B/(2*(1+Prop3_B)
Overall = Prop1_A*C+Prop1_B*(1-C)
Return Overall
def Mod2(NumItems):
A_List = []
B_List = []
C_List = []
for i in range(NumItems):
A_List.append(input('Choose the A_Input for item {0}: '.format(i+1)))
B_List.append(input('Choose the B_input for item {0}: '.format(i+1)))
C_List.append(input('Choose the C_input for item {0}: '.format(i+1)))
for i in range (NumLams):
Func1(A_List[i],B_List[i],C_List[i])
为了清楚起见,代码的意图是Mod2创建输入列表,然后在Mod1中使用。在Mod1中,输入A和B用于从csv文件中提取输出,这些文件被读入As和Bs。输入C用于Mod1中的功能,即整体。
当我手动运行Mod1时,根本没有问题。但是如上所述,当与Mod2一起运行时......
Mod1中的代码使用从As和Bs中提取的值Prop1_A和Prop1_B没有问题,但是当运行整个函数时,在Python中返回上述错误。
我确定问题是解释C的值的方式,即作为一个float64,但不明白为什么python可能期望在那里看到一个整数。
我正在使用与Anaconda软件包一起安装的Spyder 3.2.6。
感谢任何帮助。
答案 0 :(得分:1)
我通过在mod1中明确定义csv,Prop_1等中的所有选择作为浮点数来解决问题。一个简单的答案。