Объясните ошибку функции - PullRequest
       1

Объясните ошибку функции

0 голосов
/ 30 января 2020

Мне удалось написать свою первую функцию. Однако я не понимаю этого :-) Я подошел к своей реальной проблеме с упрощенным. Смотрите следующий код:

import pandas as pd
import matplotlib as plt
import numpy as np
from pyXSteam.XSteam import XSteam
steamTable = XSteam(XSteam.UNIT_SYSTEM_MKS) 
T1_T_in = [398,397,395]
T1_p_in = [29,29,29]
T1_mPkt_in = [2.2,3,3.5]
def Power(druck,temp,menge):
    H = []
    Q = []
    for i in range(len(druck)): 
        H.append(steamTable.h_pt(druck[i],temp[i]))
        Q.append(H[i]*menge[i])
    return Q

t1Q=Power(T1_p_in,T1_T_in,T1_mPkt_in)
t3Q = Power(T3_p_in,T3_T_in,T3_mPkt_in)
print(t1Q)
print(t3Q)

Это работает. Реальная проблема сейчас в том, что я читаю данные из файла Excel. Я получил сообщение об ошибке и (в соответствии с результатами, полученными на этой хорошей домашней странице :-)) я добавил «.tolist ()» в функцию, и она работает. Я не понимаю, почему мне нужно изменить его на список? Кто-нибудь может мне это объяснить? Спасибо за вашу помощь.

import pandas as pd
import matplotlib as plt
import numpy as np
from pyXSteam.XSteam import XSteam
steamTable = XSteam(XSteam.UNIT_SYSTEM_MKS) 

pfad="XXX.xlsx"
df = pd.read_excel(pfad)

T1T_in = df.iloc[2:746,1]
T1p_in = df.iloc[2:746,2]
T1mPkt_in = df.iloc[2:746,3]

def Power(druck,temp,menge):
    H = []
    Q = []
    for i in range(len(druck)): 
        H.append(steamTable.h_pt(druck.tolist()[i],temp.tolist()[i]))
        Q.append(H[i]*menge.tolist()[i])
    return Q

t1Q=Power(T1p_in,T1T_in,T1mPkt_in)

t1Q[0:10]

1 Ответ

0 голосов
/ 30 января 2020

Причина, по которой ваш первый пример работает, заключается в том, что вы передаете переменную T1_mPkt_in в параметр menge как list:

T1_mPkt_in = [2.2,3,3.5]

Ваш второй пример не работает, поскольку вы передаете T1_mPkt_in переменная в параметре menge как series, а не list:

T1mPkt_in = df.iloc[2:746,3]

Если вы напечатаете тип T1_mPkt_in, вы получите:

<class 'pandas.core.series.Series'>

В pandas, чтобы преобразовать series обратно в list, вы можете позвонить .tolist(), чтобы сохранить данные в list, чтобы вы могли правильно index it.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...