Home > Mobile >  python: how can I access an element in a pandas series contained in a dictionary
python: how can I access an element in a pandas series contained in a dictionary

Time:12-06

I have the following dictionary dict_group containing several pandas series as value whose keys are a string of group name:

{'Group A':    Pos         Team  Pld  W  D  L  GF  GA  GD  Pts
 0    1  Netherlands    3  2  1  0   5   1   4    7
 1    2      Senegal    3  2  0  1   5   4   1    6
 2    3      Ecuador    3  1  1  1   4   3   1    4
 3    4    Qatar (H)    3  0  0  3   1   7  −6    0,
 'Group B':    Pos           Team  Pld  W  D  L  GF  GA  GD  Pts
 0    1        England    3  2  1  0   9   2   7    7
 1    2  United States    3  1  2  0   2   1   1    5
 2    3           Iran    3  1  0  2   4   7  −3    3
 3    4          Wales    3  0  1  2   1   6  −5    1,
 'Group C':    Pos          Team  Pld  W  D  L  GF  GA  GD  Pts
 0    1     Argentina    3  2  0  1   5   2   3    6
 1    2        Poland    3  1  1  1   2   2   0    4
 2    3        Mexico    3  1  1  1   2   3  −1    4
 3    4  Saudi Arabia    3  1  0  2   3   5  −2    3,
 'Group D':    Pos       Team  Pld  W  D  L  GF  GA  GD  Pts
 0    1     France    3  2  0  1   6   3   3    6
 1    2  Australia    3  2  0  1   3   4  −1    6
 2    3    Tunisia    3  1  1  1   1   1   0    4
 3    4    Denmark    3  0  1  2   1   3  −2    1,

each series contains a 'Pos' column and a 'Team' column, I am trying to access the Pos corresponding to a selected team, example if I chose Senegal in group A I want to retrieve the value 2, can you please help me figure this out

CodePudding user response:

If select in dictionary of DataFrames by key get DataFrame, then convert Team to index, so possible use DataFrame.loc:

df = d['Group A']

out = df.set_index('Team').loc['Senegal', 'Pos']

Or use DataFrame.loc with boolean indexing - but then necessary convert one element Series to scalar:

out = df.loc[df['Team'].eq('Senegal'), 'Pos'].iat[0]

out = next(iter(df.loc[df['Team'].eq('Senegal'), 'Pos']), 'no match')
  • Related