Работа модуля внутри модуля возвращает - TypeError: объект 'numpy.float64' не может быть интерпретирован как целое число - PullRequest
0 голосов
/ 26 мая 2018

Я запускаю функцию внутри другой функции в цикле и у меня возникла проблема, когда первый модуль (Mod1) использует значения, определенные во втором модуле (Mod2), для генерации результата для уравнения, называемого Общий.

Возвращаемая ошибка выглядит следующим образом: 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 выполняется с использованием значений Prop1_A и Prop1_B, извлеченных из As и B, без проблем, но когда дело доходит до запуска функции длявышеупомянутая ошибка возвращается в Python.

Я уверен, что проблема заключается в способе интерпретации значения для C, то есть как float64, но не понимаю, почему Python может ожидать там целое число.

Я использую Spyder 3.2.6, установленный с пакетом Anaconda.

Любая предоставленная помощь с благодарностью получена.

1 Ответ

0 голосов
/ 27 мая 2018

Я решил проблему, явно определив все выборки из csv, Prop_1 и т. Д. В Mod1 как плавающие.Простой ответ на самом деле.

...