gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:00:00 25 4
gpt4 key购买 nike

我有一个像这样构造的 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)

所以 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 系列做到这一点?

谢谢

最佳答案

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

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

关于python - 根据多索引的一部分选择 pandas 系列中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com