gpt4 book ai didi

python-3.x - 在 Pandas 数据框中创建一个新列,其中包含数据框中每个玩家的前一年统计数据

转载 作者:行者123 更新时间:2023-12-04 09:15:17 25 4
gpt4 key购买 nike

(Python)
我目前有一个看起来像这样的 Pandas 数据框:

player        |     year     |     points     |
-----------------------------------------------
LeSean McCoy | 2012 | 199.3 |
-----------------------------------------------
LeSean McCoy | 2013 | 332.6 |
-----------------------------------------------
LeSean McCoy | 2014 | 200.4 |
-----------------------------------------------
我正在尝试向包含的数据框添加一个新列
玩家的前一年 points .
我可以做一个 groupby在此示例中将数据帧转换为一行,其中
每个 year是它自己的专栏。但是,我只想要添加一列,例如:
player        |     year     |     points     |     prev_year_pts     |
-----------------------------------------------------------------------
LeSean McCoy | 2012 | 199.3 | 0 |
-----------------------------------------------------------------------
LeSean McCoy | 2013 | 332.6 | 199.3 |
-----------------------------------------------------------------------
LeSean McCoy | 2014 | 200.4 | 332.6 |
-----------------------------------------------------------------------
我正在使用的真实数据框有 300 多个唯一的玩家名称,
所以我一直试图在这个例子上找到一个解决方案,它可以
还可以在示例中使用不同的播放器名称,并具有如下所需的输出:
player               |     year     |     points     |     prev_year_pts     |
------------------------------------------------------------------------------
LeSean McCoy | 2012 | 199.3 | 0 |
------------------------------------------------------------------------------
LeSean McCoy | 2013 | 332.6 | 199.3 |
------------------------------------------------------------------------------
LeSean McCoy | 2014 | 200.4 | 332.6 |
------------------------------------------------------------------------------
Christian McCaffrey | 2017 | 228.6 | 0 |
------------------------------------------------------------------------------
Christian McCaffrey | 2018 | 385.5 | 228.6 |
------------------------------------------------------------------------------
Christian McCaffrey | 2019 | 471.2 | 385.5 |
------------------------------------------------------------------------------
我已经能够添加 prev_year具有以下代码的列:
example["prev_year"] = [x-1 for x in example.groupby(["player"])["year"].get_group("LeSean McCoy")]
但我被困在如何获得 prev_year_points从中,以及如何以某种方式实现
可以计算每个 player观察...

最佳答案

您可以尝试按 player 对值进行排序和 year首先,然后做 groupby + shift :

df=df.sort_values(['player','year'])
df['prev_year_pts']=df.groupby('player')['points'].shift(fill_value=0)

所以你给的样本的一个小例子:
#create the dataframe
d={'player': {0: 'LeSean McCoy', 1: 'LeSean McCoy', 2: 'LeSean McCoy', 3: 'Christian McCaffrey', 4: 'Christian McCaffrey', 5: 'Christian McCaffrey'},
'year': {0: 2013, 1: 2012, 2: 2014, 3: 2019, 4: 2018, 5: 2017}, 'points': {0: 199.3, 1: 332.6, 2: 200.4, 3: 228.6, 4: 385.5, 5: 471.2}}

df=pd.DataFrame(d)
df
# player year points
#0 LeSean McCoy 2013 199.3
#1 LeSean McCoy 2012 332.6
#2 LeSean McCoy 2014 200.4
#3 Christian McCaffrey 2019 228.6
#4 Christian McCaffrey 2018 385.5
#5 Christian McCaffrey 2017 471.2


df=df.sort_values(['player','year'])
df
# player year points
#5 Christian McCaffrey 2017 471.2
#4 Christian McCaffrey 2018 385.5
#3 Christian McCaffrey 2019 228.6
#1 LeSean McCoy 2012 332.6
#0 LeSean McCoy 2013 199.3
#2 LeSean McCoy 2014 200.4

df['prev_year_pts']=df.groupby('player')['points'].shift(fill_value=0)
df
# player year points prev_year_pts
#5 Christian McCaffrey 2017 471.2 0.0
#4 Christian McCaffrey 2018 385.5 471.2
#3 Christian McCaffrey 2019 228.6 385.5
#1 LeSean McCoy 2012 332.6 0.0
#0 LeSean McCoy 2013 199.3 332.6
#2 LeSean McCoy 2014 200.4 199.3

关于python-3.x - 在 Pandas 数据框中创建一个新列,其中包含数据框中每个玩家的前一年统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63252280/

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