熊猫基于分组应用值

问题描述 投票:0回答:1

我有一个数据框,看起来像:

time    action    value
10:00   FG2       2
10:00   Assist    0
09:45   Turnover  -1
09:45   Steal     0
09:30   FG3       3
09:20   Miss      0

如何将值列应用于共享相同time值的其他行?在此示例中,第二行的value为2,因为它与第一行共享相同的time

预期的输出将是:

10:00   FG2          2
10:00   Assist       2
09:45   Turnover     -1
09:45   Steal        -1
09:30   FG3          3
09:20   Miss         0

我现在要采用的方法是用value创建一个具有MAX time的分组数据帧,然后在time上JOIN回到原始数据帧,但这是SQL / RDBMS类型的思想,我想知道是否有更有效的方法可以通过Python进行此操作?

python pandas greatest-n-per-group
1个回答
0
投票

我不确定选择逻辑到底是什么,但这是一个示例,它每次仅获取第一个值并进行传播。如果您想获得最大值,也可以执行类似.max()的操作:

In [12]: df
Out[12]:
    time    action  value
0  10:00       FG2      2
1  10:00    Assist      0
2  09:45  Turnover     -1
3  09:45     Steal      0
4  09:30       FG3      3
5  09:20      Miss      0

In [13]: df['value'] = df['time'].map(df.groupby("time")['value'].first())

In [14]: df
Out[14]:
    time    action  value
0  10:00       FG2      2
1  10:00    Assist      2
2  09:45  Turnover     -1
3  09:45     Steal     -1
4  09:30       FG3      3
5  09:20      Miss      0
© www.soinside.com 2019 - 2024. All rights reserved.