#python #python-3.x #pandas
Вопрос:
У меня есть следующий код для выбора одной строки во фрейме данных:
products_df1_final = (products_df1.loc[products_df1['uuid'] == "790a06bf-91a5-
487e-988e-2c8294bd4355"])
products_df1_final
Однако я, похоже, не могу заставить это работать, когда пользователь вводит более одного значения поля «uuid» для фильтрации. Я хотел бы создать небольшой код, чтобы попросить пользователя ввести различные значения полей «uuid», чтобы создать фрейм данных только с выбранными пользователем строками «uuid».
Следующий код не работает:
n = str(input('Enter product numbers:')) products_df1_final =
(products_df1.loc[products_df1['uuid'] == 'n'])
display(products_df1_final[['title','uuid','ingestiondate','size']])
Ответ №1:
Одна из проблем заключается в том, как вы использовали свою входную переменную n
. Если вы процитируете его, как вы это сделали, он будет рассматриваться как строка "n"
вместо имени переменной.
Другой способ-это то, как выглядит ввод. Если это строка, она не будет работать. Вы должны использовать список. Примером может быть:
n = str(input('Enter product number:'))
m = str(input('Enter another product number:'))
products_df1_final = (products_df1.loc[products_df1['uuid'] == [n, m]])
Или, чтобы расширить его до реальной переменной списка product_names
:
product_names = []
pname = None
while pname != '':
pname = str(input('Enter product number:'))
if pname != '':
product_names.append(pname)
products_df1_final = (products_df1.loc[products_df1['uuid'] == product_names])
Комментарии:
1. Мне нравится первый, потому что он прост, и я не могу загружать больше 2 за раз. Ошибка значения: (‘Длины должны совпадать для сравнения’, (9,), (2,)) для обоих. —> 224 «Длины должны совпадать для сравнения», значения.форма, значения.форма 225 ) 226
2. Каковы ваши точные данные? Пожалуйста, добавьте несколько строк в свой фрейм данных.
3. Я только что добавил скриншот, на который вы можете посмотреть.
Ответ №2:
Использовал подход к пониманию списка.
# Directory to place files
download_directory = (r"C:UsersMatthewOneDriveLand Suitability ModelLayersSentinelSentinel RSTDownloads")
print("Enter Two UUID tiles for download:")
n = input('Enter product number:')
m = input('Enter another product number:')
#products_df1_final = products_df1[[x == ["n", "m"]] for x in products_df1.uuid
products_df1_final = products_df1[products_df1.uuid.isin([n, m])]
products_df1_final
# Sentinel Products to download
api.download_all(products_df1_final.index, checksum=True)