использование панд HTML для чтения и печати данных с веб-сайта - PullRequest
0 голосов
/ 12 октября 2019

Проблема:

Мне нужно создать код, который выводит данные из набора данных в Интернете с помощью pandas pd.read_HTML, затем вызвать температуру на основе этого списка и получить ееотобразить эту строку данных с несколькими параметрами.

Проблема в том, что последняя часть, которую мне нужно сделать, это сделать там, где она зацикливается, когда пользовательский ввод выходит за пределы диапазона или нет == к одной из задокументированных температур, она возвращает команду повтора, сообщающую что-то вродеНеверный ввод

Что я пробовал:

Я попытался запустить его через цикл while, попробуйте исключить команды и if и elif, но я уверен, что сделал это неправильнопотому что это почти все время нарушает мою шпионскую программу, поэтому я должен закрыть ее и попробовать еще раз.

Любые рекомендации или решения были бы очень полезны, потому что я прошел через смутные намеки, которые должны были привести меня к ответу, но оставили меня в замешательстве.

Мой код:


def get_t_data(t):
    t_table = pd.read_html('https://thermo.pressbooks.com/chapter/saturation-properties-temperature-table/', header=0)
    t_df = t_table[0]
    data_df =t_df.loc[t_df['Temp'] == t]
    df_result = data_df[['Pressure', 'Volume ()', 'Energy (kJ/kg)', 'Enthalpy (kJ/kg)', 'Entropy (kJ/kg.K)']]
    df_final = df_result.to_string(index=False)
    return df_final


user_t = input('Please enter the temp you will like to research: ')
print('\n')

data = get_t_data(user_t)
print('For temperature {}°C your outputs are \n'.format(user_t))
print(data)```

1 Ответ

0 голосов
/ 12 октября 2019

[обн] примерно так:

import pandas as pd

def get_t_data(t):
    t_table = pd.read_html('https://thermo.pressbooks.com/chapter/saturation-properties-temperature-table/', header=0)
    t_df = t_table[0]

    t_df = t_df.iloc[1:,:] # to skip additional line of header

    ind = list(t_df['Temp'].astype(float))  # get all indexes as float as you have not only integer (0.01 and 373.95)
    if float(t) not in ind:  # check if the 't' in index
        return {'exist': False, 'result':'no such temp'}

    data_df =t_df.loc[t_df['Temp'] == t]
    df_result = data_df[['Pressure', 'Volume ()', 'Energy (kJ/kg)', 'Enthalpy (kJ/kg)', 'Entropy (kJ/kg.K)']]
    df_final = df_result.to_string(index=False)
    return {'exist': True, 'result': df_final}



# data format for get_t_data response
data = {'exist': False, 'result':''}



while data['exist'] == False:
    user_t = input('Please enter the temp you will like to research: ')
    print('\n')

    data = get_t_data(user_t)
    print('For temperature {}°C your outputs are \n'.format(user_t))
    print(data['result'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...