我有一个这样构造的熊猫系列
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)
所以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,4,0,2,0,0]
combo_df.loc[combo_df['A'] == 'BB', :]
但是我的combo_values
系列有没有办法做到这一点?
谢谢
答案 0 :(得分:2)
执行此操作的正确方法是使用多索引,而不是元组索引:
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 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