У меня есть 3 кадра данных:
df1
с историей матчей (упорядочено по дате) df2
со статистикой игрока (упорядочено по имени игрока) df3
разница между показателями игрока (df2
) за матч (df1
) [в процессе]
Я хочу сделать что-то вроде:
for idx, W_nm, L_nm in df1[['index','winner_name','loser_name']].values:
df3.loc[idx] = df2.loc[W_nm] - df2.loc[L_nm]
#... edit this row further
Что не получается, потому что:
'idx'
не ссылается на индексы df1
df3
не имеет определенных столбцов
Есть лиспособ ссылаться на индексы в первой строке?
Я прочитал iterrows()
в 7 раз медленнее, чем .loc[]
, и у меня достаточно данных для обработки
Есть что-нибудьчище, чем это:
for idx in df1.index:
W_nm = df1.loc[idx,'winner_name']
L_nm = df1.loc[idx,'loser_name']
df3.loc[idx] = df2.loc[W_nm] - df2.loc[L_nm]
#... edit this row further
Который не исправляет "не определенные столбцы", но дает мне мои ручки.
Так что я ожидаю что-то вроде:
df1
[ 'Loser' 'Winner' 'Score'
0 Harry Hermione 3-7 ...
1 Harry Ron 0-2 ...
2 Ron Voldemort 7-89 ... ]
df2
[ 'Spells' 'Allies'
Harry 23 84 ...
Hermione 94 68 ...
Ron 14 63 ...
Voldemort 97 92 ... ]
then
df3
[ 'Spells' 'Allies'
0 -71 16 ...
1 9 21 ...
2 -83 -29 ... ]