I have got trouble to make to compute the number of days in a row until a condition is found.
It is given in the following table were Gap done is the messy table I obtained with the solution form there , and Expected gap the output I want to obtain.
+--------+------------+---------------------+----------+----------------------------------------------------------------------------------------------+
| Player |   Result   |        Date         | Gap done |                                         Expected Gap                                         |
+--------+------------+---------------------+----------+----------------------------------------------------------------------------------------------+
| K2000  | Lose       | 2015-11-13 13:42:00 | Nan      | Nan/0                                                                                        |
| K2000  | Lose       | 2016-03-23 16:40:00 | 131.0    | 131.0                                                                                        |
| K2000  | Lose       | 2016-05-16 19:17:00 | 54.0     | 185.0                                                                                        |
| K2000  | Win        | 2016-06-09 19:36:00 | 54.0     | 239.0 #he always lose before                                                                 |
| K2000  | Win        | 2016-06-30 14:05:00 | 54.0     | 54.0 #because he won last time, it's 54 days btw this current date and the last time he won. |
| K2000  | Lose       | 2016-07-29 16:20:00 | 29.0     | 29.0                                                                                         |
| K2000  | Win        | 2016-10-08 17:48:00 | 29.0     | 58.0                                                                                         |
| Kssis  | Lose       | 2007-02-25 15:05:00 | Nan      | Nan/0                                                                                        |
| Kssis  | Lose       | 2007-04-25 16:07:00 | 59.0     | 59.0                                                                                         |
| Kssis  | Not ranked | 2007-06-01 16:54:00 | 37.0     | 96.0                                                                                         |
| Kssis  | Lose       | 2007-09-09 14:33:00 | 99.0     | 195.0                                                                                        |
| Kssis  | Lose       | 2008-04-06 16:27:00 | 210.0    | 405.0                                                                                        |
+--------+------------+---------------------+----------+----------------------------------------------------------------------------------------------+
The issue of the solution there is it does not really compute date. It has the chance that date in this example are always separate by 1 day.
Sure I adapted with
def sum_days_in_row_with_condition(g):
    sorted_g = g.sort_values(by='date', ascending=True)
    condition = sorted_g['Result'] == 'Win'
    sorted_g['days-in-a-row'] = g.date.diff().dt.days.where(~condition).ffill()
    return sorted_g
But as I showed you, this is messy.
So I thought about a solution, but it needs global variables (out of function), and that's a little fastidious.
Can anyone help to solve this problematic in a simpler way ?
Pandas version: 0.23.4 Python version: 3.7.4