Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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
Python 根据多索引的一部分选择熊猫系列中的条目_Python_Python 3.x_Pandas - Fatal编程技术网

Python 根据多索引的一部分选择熊猫系列中的条目

Python 根据多索引的一部分选择熊猫系列中的条目,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个像这样的熊猫系列 import itertools import pandas as pd combos = list(itertools.permutations(['BB', 'BW', 'WW'], 2)) combo_values = pd.Series([2,4,0,2,0,0], combos) (BB, BW) 2 (BB, WW) 4 (BW, BB) 0 (BW, WW) 2 (WW, BB) 0 (WW, BW) 0 dty

我有一个像这样的熊猫系列

import itertools
import pandas as pd

combos = list(itertools.permutations(['BB', 'BW', 'WW'], 2))

combo_values = pd.Series([2,4,0,2,0,0], combos)

(BB, BW)    2
(BB, WW)    4
(BW, BB)    0
(BW, WW)    2
(WW, BB)    0
(WW, BW)    0
dtype: int64
combo_values['BB', 'BW']
因此,
combo\u值
如下所示

import itertools
import pandas as pd

combos = list(itertools.permutations(['BB', 'BW', 'WW'], 2))

combo_values = pd.Series([2,4,0,2,0,0], combos)

(BB, BW)    2
(BB, WW)    4
(BW, BB)    0
(BW, WW)    2
(WW, BB)    0
(WW, BW)    0
dtype: int64
combo_values['BB', 'BW']
我知道你可以像这样提取一个条目

import itertools
import pandas as pd

combos = list(itertools.permutations(['BB', 'BW', 'WW'], 2))

combo_values = pd.Series([2,4,0,2,0,0], combos)

(BB, BW)    2
(BB, WW)    4
(BW, BB)    0
(BW, WW)    2
(WW, BB)    0
(WW, BW)    0
dtype: int64
combo_values['BB', 'BW']
所以我想提取前两个条目,我想这样做:

combo_values['BB',]

#or this

combo_values['BB',:]
BB  BW    0.25
    WW    0.50
BW  BB    0.00
    WW    0.25
WW  BB    0.00
    BW    0.00
dtype: float64
combo_values['BB',]
两者都不起作用,第一个选项会产生以下错误(我正在切掉痕迹)

我知道这种替代解决方案有效:

combo_df = pd.DataFrame(combos, columns = ['A', 'B'])
combo_df['combo_values'] = [2,4,0,2,0,0]
combo_df.loc[combo_df['A'] == 'BB', :]
但是有没有办法用我的
combo\u值
系列做到这一点


谢谢

正确的方法是使用多索引,而不是元组索引:

import itertools
import pandas as pd

combos = list(itertools.permutations(['BB', 'BW', 'WW'], 2))

multi = pd.MultiIndex.from_tuples(combos)

combo_values = pd.Series([2,4,0,2,0,0], multi)
组合_值
现在看起来如下所示:

combo_values['BB',]

#or this

combo_values['BB',:]
BB  BW    0.25
    WW    0.50
BW  BB    0.00
    WW    0.25
WW  BB    0.00
    BW    0.00
dtype: float64
combo_values['BB',]
它可以像这样过滤:

combo_values['BB',]

#or this

combo_values['BB',:]
BB  BW    0.25
    WW    0.50
BW  BB    0.00
    WW    0.25
WW  BB    0.00
    BW    0.00
dtype: float64
combo_values['BB',]
屈服

BW    0.25
WW    0.50

可以考虑用<代码>多索引< /代码>替换COMPOBY值的索引吗?如果可能的话,那个么你们尝试过的切片方式应该可以很好地工作。这非常有效,我只是不熟悉pd.MultiIndex。谢谢