我有一个这样构造的熊猫系列
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系列做到这一点?
谢谢
最佳答案
正确的方法是使用多索引,而不是元组索引:
原文链接:https://www.f2er.com/python/533238.htmlimport 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