у меня есть датафрейм df1
следующим образом
+------+----------+-----+
| Date | Location | Key |
+------+----------+-----+
| | a | 1 |
| | a | 2 |
| | b | 3 |
| | b | 3 |
| | b | 3 |
| | c | 4 |
| | c | 4 |
| | b | 5 |
| | b | 6 |
| | d | 7 |
| | b | 8 |
| | b | 8 |
| | b | 8 |
| | b | 9 |
+------+----------+-----+
и df2
ниже вырезаны из этого.
+------+----------+-----+
| Date | Location | Key |
+------+----------+-----+
| | b | 3 |
| | b | 3 |
| | b | 3 |
| | b | 5 |
| | b | 6 |
| | b | 8 |
| | b | 8 |
| | b | 9 |
| | b | 9 |
+------+----------+-----+
Цель состоит в том, чтобы найти разницу во времени между Key
изменениями в df2
(как от последних 3 до 5, от 5 до 6, 6 до первых 8, от последних 8 до первых 9 и т. Д.), сложите их, повторите это для каждого элемента Location
и усредните их.
Может ли этот процесс быть векторизованным, или нам нужно нарезать кадр данных для каждой машины и вручную вычислить среднее значение?
[РЕДАКТИРОВАТЬ]:
Traceback (most recent call last):
File "<ipython-input-1142-b85a122735aa>", line 1, in <module>
s = temp.groupby('SSCM_ Location').apply(lambda x: x[x['Key'].diff().ne(0)]['Execution Date'].diff().mean())
File "C:\Users\dbhadra\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\groupby\groupby.py", line 930, in apply
return self._python_apply_general(f)
File "C:\Users\dbhadra\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\groupby\groupby.py", line 936, in _python_apply_general
self.axis)
File "C:\Users\dbhadra\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\groupby\groupby.py", line 2273, in apply
res = f(group)
File "<ipython-input-1142-b85a122735aa>", line 1, in <lambda>
s = temp.groupby('SSCM_ Location').apply(lambda x: x[x['Key'].diff().ne(0)]['Execution Date'].diff().mean())
File "C:\Users\dbhadra\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\series.py", line 1995, in diff
result = algorithms.diff(com._values_from_object(self), periods)
File "C:\Users\dbhadra\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\algorithms.py", line 1823, in diff
out_arr[res_indexer] = arr[res_indexer] - arr[lag_indexer]
TypeError: unsupported operand type(s) for -: 'str' and 'str'