模块内部运行模块返回 - TypeError:'numpy.float64'对象不能解释为整数

时间:2018-05-26 19:00:55

标签: python-3.x integer spyder

我在循环中的另一个函数内运行一个函数,当第一个模块(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。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我通过在mod1中明确定义csv,Prop_1等中的所有选择作为浮点数来解决问题。一个简单的答案。