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

前端之家收集整理的这篇文章主要介绍了python-根据多索引的一部分选择熊猫系列中的条目 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个这样构造的熊猫系列

import itertools
import pandas as pd

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

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

所以combo_values看起来像这样

(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',:]

都不起作用,并且第一个选项会产生以下错误(我正在清除跟踪)

TypeError: 'tuple' object cannot be interpreted as an integer

KeyError: ('BB',)

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

combo_df = pd.DataFrame(combos,columns = ['A','B'])
combo_df['combo_values'] = [2,0]
combo_df.loc[combo_df['A'] == 'BB',:]

但是有没有办法用我的combo_values系列做到这一点?

谢谢

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

import itertools
import pandas as pd

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

multi = pd.MultiIndex.from_tuples(combos)

combo_values = pd.Series([2,multi)

现在,combo_values如下所示:

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
原文链接:https://www.f2er.com/python/533238.html

猜你在找的Python相关文章