gpt4 book ai didi

python - 使用 Pandas 跟踪元素在行中的位置

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:54 24 4
gpt4 key购买 nike

我一直从事运动分析,尤其是足球,我正在计算团队的周排名。我想跟踪他们的位置变化。这是复制我的问题的示例数据。

df = pd.DataFrame()
df ['Season'] = ['1314','1314','1314','1314','1314','1314','1314','1314','1314','1415','1415','1415','1415','1415','1415','1415','1415','1415']
df ['Team'] = ['A','B','C','A','B','C','A','B','C','A','B','C','A','B','C','A','B','C']
df ['GW'] = [1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3]
df['Position'] = [1,2,3,3,1,2,2,3,1,2,1,3,2,1,3,3,2,1]

所以我有所有的每周职位等。为了跟踪位置变化,我将首先对数据框进行排序,如下所示:

df = df.sort_values (['Season','Team'])

排序后,我应用 diff() 函数来获取如下变化:

v = df.Position.diff()
v[0] = 0
df ['Position_change']= v

我想跟踪每个 GW 的变化。在我的数据框中,我有 3 个 GW。我希望每个团队的所有 GW1 在位置更改时都为 0。第二个问题是如果我使用 diff() 则两个团队之间进行更改(我不想要)您可以在附图中看到: enter image description here

谁能给点建议?

最佳答案

IIUC,你需要:

df['Position_Change']=df.groupby(['Season','Team'])['Position'].apply(lambda x : x.diff().fillna(0))
print(df)

Season Team GW Position Position_Change
0 1314 A 1 1 0.0
3 1314 A 2 3 2.0
6 1314 A 3 2 -1.0
1 1314 B 1 2 0.0
4 1314 B 2 1 -1.0
7 1314 B 3 3 2.0
2 1314 C 1 3 0.0
5 1314 C 2 2 -1.0
8 1314 C 3 1 -1.0
9 1415 A 1 2 0.0
12 1415 A 2 2 0.0
15 1415 A 3 3 1.0
10 1415 B 1 1 0.0
13 1415 B 2 1 0.0
16 1415 B 3 2 1.0
11 1415 C 1 3 0.0
14 1415 C 2 3 0.0
17 1415 C 3 1 -2.0

关于python - 使用 Pandas 跟踪元素在行中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54249661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com