Извлечение данных из Pandas на основе iloc и пользовательского ввода

#python #sqlite #pandas

#python #sqlite #pandas

Вопрос:

У меня есть небольшая база данных SQLite с данными об электрических проводниках. Программа печатает список имен и идентификатор Pandas, принимает ввод этого идентификатора пользователем, а затем печатает всю информацию о выбранном проводнике.

Я пытаюсь выяснить, как затем выбрать определенный элемент из указанного столбца — позже я разрешу ввод, но пока я просто вручную указываю в print(), чтобы упростить устранение неполадок для себя.

Программа работает до комбинированной условной строки печати. Я подозреваю, что приведение строки к int усложняет задачу больше, чем нужно; если есть лучший способ выбрать запись (например, просто сопоставив имя, указанное имени в БД), я открыт для этого.

 with lite.connect(db_path) as db:

df = pd.read_sql_query('SELECT * FROM cond', conn)
print('What conductor are you analyzing?')

try:
    print(pd.read_sql_query('SELECT name FROM cond', conn)) # List names and Pandas IDs
    getCond = int(input('nEnter the ID #: ')) # cast string to int to allow .iloc
    printSel = df.iloc[getCond]
    print()
    print(printSel)
    print(df[(df['Amps']) amp; (df.iloc == getCond)])

finally:
    if conn:
        conn.close()
  

РЕДАКТИРОВАТЬ: ошибка, возникающая после выбора элемента,

«Ошибка типа: невозможно сравнить dtyped массив [object] со скаляром типа [bool]»

Я в растерянности, потому что я думаю, что это говорит о том, что оператор amp; сравнивается с чем-то, а не использует его для печати всего, что соответствует «Этому И тому».

Ответ №1:

Если я правильно понимаю, ‘getCond’ будет индексом строки, которую вы хотите выбрать, а ‘Amps’ — это столбец. Я думаю, вы можете просто сделать это, чтобы вернуть строку ‘getCond’ столбца ‘Amps’.

df.loc[getCond, ‘Amps’]