我有一个数据框,看起来像:
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进行此操作?
我不确定选择逻辑到底是什么,但这是一个示例,它每次仅获取第一个值并进行传播。如果您想获得最大值,也可以执行类似.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