首页 > 解决方案 > 基于多个用户输入值过滤 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']])

数据框

标签: pythonpython-3.xpandas

解决方案


一个问题是您使用输入变量的方式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])

推荐阅读