我有三个数据:
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()比.loc[]慢7倍,我有很多数据要处理
还有什么比这更干净的吗?
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 ... ]发布于 2019-06-07 12:55:09
你需要的是join
loser = df1.join(df2, on='Loser').loc[:,['Spells', 'Allies']]
winner = df1.join(df2, on='Winner').loc[:,['Spells', 'Allies']]
df3 = winner - loser通过您的示例,提供了以下数据:
Spells Allies
0 71 -16
1 -9 -21
2 83 29https://stackoverflow.com/questions/56494449
复制相似问题