我需要计算delta列(如下所示)。但棘手的是下面提到的条件。我怎样才能在熊猫身上做到这一点?
扬声器|视频|帧|时间|增量(预期)
--------|-------|-------|------|----------------
一| 1 | 0 | 10 | 0
一| 1 | 1 | 15 | 5
一个| 2 | 0 | 12 | 0
一个| 2 | 1 | 16 | 4
二| 2 | 0 | 19 | 0
二|二|一|二十二|三
二|二|二|十六|-6
条件:
Delta是同一个扬声器和同一个视频的帧之间的差异。换句话说,delta不应该针对不同的演讲者或不同的视频计算行。对于这些情况,该值应初始化为零,如delta(预期)列中所示。
最佳答案
让我们不要使用groupby
、diff
和fillna
:
df['delta'] = df.groupby(['speaker','video'])['time'].diff().fillna(0)
输出:
speaker video frame time delta(expected) delta
0 one 1 0 10 0 0.0
1 one 1 1 15 5 5.0
2 one 2 0 12 0 0.0
3 one 2 1 16 4 4.0
4 two 2 0 19 0 0.0
5 two 2 1 22 3 3.0
6 two 2 2 16 -6 -6.0
关于python - 如何在特定条件下在 Pandas 数据框行中找到增量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45423784/