我正在使用下拉窗口小部件来获取数据框中列之一中的值。根据我在下拉菜单中选择的值,我希望数据框仅过滤那些行。然后,我将继续使用过滤后的数据框进行分析。
col1 | col2 | col3
A | Orange | 2
B | Apple | 3
A | Apple | 4
对于col2,我会有一个下拉列表(使用ipywidgets),当我选择Apple
时,我想获取结果数据框。
col1 | col2 | col3
B | Apple | 3
A | Apple | 4
答案 0 :(得分:1)
这显示了您从下拉菜单中选择的水果。如果您想了解有关小部件的更多信息,我建议您观看交互式小部件的Scipy 2020记录。
from ipywidgets import interact
import pandas as pd
def show_df(value):
data = [['A', 'Orange', 2],['B', 'Apple', 3],['A', 'Apple', 4]]
df = pd.DataFrame(data, columns=['Letter','Fruit','Number'])
print(df[df.Fruit==value])
interact(show_df, value = ['Apple','Orange'])
有更多专用的方法来创建下拉菜单,但这是可行的。如本例所示:
import ipywidgets as widgets
widgets.Select(
options=['Linux', 'Windows', 'OSX'],
value='OSX',
# rows=10,
description='OS:',
disabled=False
)
答案 1 :(得分:0)
我不特别了解ipywidgets,但是假设您可以获取选择的值(例如“ Apple”),则按列值进行过滤是很容易的。
df = pd.DataFrame({"col1": ["A", "B", "A"],
"col2": ["Orange", "Apple", "Apple"],
"col3": [2, 3, 4]})
df = df[df["col2"] == "Apple"]
然后,当您打印df时,您将得到
col1 col2 col3
1 B Apple 3
2 A Apple 4
基本上,您可以通过df["col2"] == "Apple"
创建一个掩码(真值和False值的数据帧),然后可以将该掩码用作索引,以仅获取该掩码为True的值。