我已经来这里差不多两年了,而且一直都能解决问题,但我现在很难过。希望这是一个快速的答案。
https://github.com/MPhillips55/Capstone-Project-2---League-of-Legends/blob/master/EDA/test_case.csv
链接有我的数据。 'min_0','min_1'等等是英雄联盟游戏的金币值,间隔为1分钟,持续到'min_80'。应该可以下载csv。
我想从蓝色值中减去红色值,并将该数字存储在每分钟的蓝色行上。
然后我想从红色值中减去蓝色值,并将该数字存储在每一分钟的红色行上。
为清楚起见,我只对匹配'match_id'的比较感兴趣。
这是我想要的输出图像:
我认为正确答案可能是这样的:
gold_df.loc[gold_df['red_or_blue_side'] == 'blue', :] = \
BLUE_VALUES - BLUE_VALUES.shifted_down
gold_df.loc[gold_df['red_or_blue_side'] == 'red', :] = \
RED_VALUES - RED_VALUES.shifted_up
我不清楚该代码的两件事。我需要选择除前两个之外的所有列来计算差异。我也不知道如何在所有相关列中选择值和移位值。
感谢您的帮助。如果需要更多信息,请告诉我。
-Mike
答案 0 :(得分:0)
选择除前两个之外的所有列:
df[df.columns[2:]]
答案 1 :(得分:0)
选择除前两个之外的所有列:
df.iloc[:,2:]
答案 2 :(得分:0)
您可以groupby
match_id
然后使用.diff
找出每个方向的差异,然后添加两个组件。
g = df.groupby('match_id', sort=False)[df.columns[2:]]
df = g.diff().fillna(0) + g.diff(-1).fillna(0)
df
min_0 min_1 min_2 min_3 min_4 min_5 min_6 min_7 min_8 min_9 \
0 0.0 15.0 46.0 -133.0 -60.0 -904.0 -505.0 -852.0 -763.0 -1224.0
1 0.0 -15.0 -46.0 133.0 60.0 904.0 505.0 852.0 763.0 1224.0
2 0.0 0.0 0.0 89.0 -92.0 -174.0 191.0 69.0 253.0 362.0
3 0.0 0.0 0.0 -89.0 92.0 174.0 -191.0 -69.0 -253.0 -362.0
4 0.0 0.0 17.0 -106.0 -136.0 400.0 363.0 829.0 1532.0 1862.0
5 0.0 0.0 -17.0 106.0 136.0 -400.0 -363.0 -829.0 -1532.0 -1862.0
... min_71 min_72 min_73 min_74 min_75 min_76 min_77 min_78 \
0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
5 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
min_79 min_80
0 0.0 0.0
1 0.0 0.0
2 0.0 0.0
3 0.0 0.0
4 0.0 0.0
5 0.0 0.0