Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ipython选择小部件-多个选择_Python_Pandas_Ipython_Ipython Notebook - Fatal编程技术网

Ipython选择小部件-多个选择

Ipython选择小部件-多个选择,python,pandas,ipython,ipython-notebook,Python,Pandas,Ipython,Ipython Notebook,从以下位置复制示例: 如何配置小部件选择框以允许同时进行多个选择 %pylab inline from pandas import Series, DataFrame, pivot_table import numpy as np import numpy from IPython.html.widgets import interact, SelectWidget, CheckboxWidget, RadioButtonsWidget from IPython.display import d

从以下位置复制示例:

如何配置小部件选择框以允许同时进行多个选择

%pylab inline
from pandas import Series, DataFrame, pivot_table
import numpy as np
import numpy
from IPython.html.widgets import interact, SelectWidget, CheckboxWidget, RadioButtonsWidget
from IPython.display import display

d = { 'Class'   : Series( ['a',  'b', 'b','a','a',  'b', 'b','a','a',  'b', 'b','a','a','b','b','b']),
  'Area'   : Series( ['North','East', 'South', 'West','North','East', 'South', 'West','North','East', 'South', 'West','South', 'West','South', 'West']),
  'Type' : Series( ['square', 'round','square', 'round', 'round', 'square', 'round', 'square', 'round', 'square','round', 'square',]),
  'Web'  : Series( ['Y','N','N','Y','Y','N','N','Y','Y','N','N','Y','Y','N','N','Y']),
  'Agent'   : Series( ['Mike',  'John', 'Pete','Mike',  'John', 'Pete','Mike',  'John', 'Pete','Mike',  'John', 'Pete','John', 'Pete','John', 'Pete']),
  'Income'   : Series( [20., 40., 90., 20.]),
  'Profit' : Series( [1., 2., 3., 4.,1., 2., 3., 4.,1., 2., 3., 4.,1., 2., 3., 4.]),
  'Stock' : Series( [20., 23., 33., 43.,12., 21., 310., 41.,11., 21., 31., 41.,11., 22., 34., 54.] )
 }
df = DataFrame(d)


def my_pivot( rows, values, aggfunc):
    dfp = df
    piv = pivot_table( dfp, rows=rows, values=values, aggfunc=aggfunc)
    print piv

i = interact( my_pivot,
             rows    = SelectWidget(values=list(df.columns)), 
             values  = SelectWidget(values=['Profit', 'Stock']),
             aggfunc = SelectWidget( values={ 'sum' : numpy.sum, 'ave' : numpy.average }))

您可以使用“SelectMultiple”小部件(IPython.html.widgets.SelectMultiple)。这似乎是在您发布问题后引入的(请记住,IPython HTML小部件仍然会受到API破坏性更改的影响)

这将为您提供与“SelectWidget”相同的列表,但允许用户进行多次选择。所有选定的选项都将作为元组发送回您的交互回调。此外,由于您发布了此“值”已更改为“选项”

下面的代码应该满足您的要求

i = interact( my_pivot,
             rows    = SelectMultiple(options=list(df.columns)), 
             values  = SelectMultiple(options=['Profit', 'Stock']),
             aggfunc = SelectMultiple(options={ 'sum' : numpy.sum, 'ave' : numpy.average }))
最后,您需要更新“my_pivot”函数,以确保它正确处理现在作为元组接收的参数