加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:40:03 所属栏目:Python 来源:网络整理
导读:我有一个这样构造的熊猫系列 import itertoolsimport pandas as pdcombos = 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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读