python: how can I access an element in a pandas series contained in a dictionary
Question:
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
Answers:
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')
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
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')