#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’]