使用ipywidgets过滤熊猫数据框

时间:2020-08-17 14:50:38

标签: python pandas ipywidgets

我正在使用下拉窗口小部件来获取数据框中列之一中的值。根据我在下拉菜单中选择的值,我希望数据框仅过滤那些行。然后,我将继续使用过滤后的数据框进行分析。

col1 |  col2    |  col3
  A  |   Orange | 2
  B  |   Apple  | 3
  A  |   Apple  | 4

对于col2,我会有一个下拉列表(使用ipywidgets),当我选择Apple时,我想获取结果数据框。

col1  | col2   | col3
  B   |  Apple | 3
  A   |  Apple | 4

2 个答案:

答案 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的值。