亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基于多索引的一部分選擇pandas系列中的條目

基于多索引的一部分選擇pandas系列中的條目

慕標琳琳 2021-12-09 10:35:30
我有一個像這樣構造的 Pandas 系列import itertoolsimport pandas as pdcombos = 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)    0dtype: int64我知道你可以像這樣提取一個條目combo_values['BB', 'BW']所以我想提取前兩個條目我想做這樣的事情:combo_values['BB',]#or thiscombo_values['BB',:]兩者都不起作用,第一個選項會產生以下錯誤(我正在刪除痕跡)TypeError: 'tuple' object cannot be interpreted as an integerKeyError: ('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系列來做到這一點?
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

正確的方法是使用多索引,而不是元組索引:


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


查看完整回答
反對 回復 2021-12-09
  • 1 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號