如何在重复索引值的pandas数据框df.loc单元格?
所以我有一个大pandas数据框(Excel),看起来像这样:
Teams Season Points Team A 1 5 Team B 1 6 Team C 1 4 Team D 1 5 Team A 2 7 Team B 2 8 Team C 2 3 Team D 2 2
你可以看到所有的团队在索引中重复。 我的问题是,有没有一种方法可以“定位”到本表中的特定单元格上
如果我要做df.loc [“团队A”,“积分”],则打印两个团队的值。 有没有一种方法可以指定AI队想要使用的赛季(第1季还是第2季)?
解决scheme与DataFrame.query
:
print (df.query('Teams=="Team A" and Season==1')['Points']) Teams Team A 5 Name: Points, dtype: int64
print (df.query('Teams=="Team A" & Season==1')['Points']) Teams Team A 5 Name: Points, dtype: int64
如果需要标量输出:
#unutbu solution from deleted answer print (df.query('Teams=="Team A" & Season==1')['Points'].item()) 5 print (df.query('Teams=="Team A" & Season==1')['Points'][0]) 5 print (df.query('Teams=="Team A" & Season==1')['Points'].values[0]) 5
创build另一个可能的解决schemeMultiIndex
– 通过set_index
添加列Season
index
,然后select:
df = df.set_index('Season', append=True) print (df) Points Teams Season Team A 1 5 Team B 1 6 Team C 1 4 Team D 1 5 Team A 2 7 Team B 2 8 Team C 2 3 Team D 2 2 print (df.loc[('Team A',1)]) Points 5 Name: (Team A, 1), dtype: int64