Finding the indices where a selected player appears in a list of hashes
Your current code is calling an \$O(n)\$ function \$n\$ times. This leads to \$O(n^2)\$ time complexity on the whole. Instead I'd make a function to change pwsarr to a Hash, where the key is the player name, and the value is a list of 'player objects'. This can then cause your program to be \$O(n)\$ as hash lookup is \$O(1)\$.

The loop can then become: (I don't know Ruby.)

pwsarr = [
    {'player'=&gt;'first1 last1', 'stat'=&gt;0.0},
    {'player'=&gt;'first1 last1', 'stat'=&gt;2.0},
    {'player'=&gt;'first2 last2', 'stat'=&gt;0.0}
]

def group_by(list_hash, key)
    h = Hash.new { |hash,key| hash[key] = [] }

    for hash in list_hash do
        h[hash[key]].push(hash)
    end
    h
end

pws_by_player = group_by(pwsarr, 'player')
for player in pwsarr do
    puts pws_by_player[player['player']]
end