С примерами данных, настроенными следующим образом
df = pd.DataFrame({'Member_ID': [540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 25, 25, 25, 25, 25, 25, 25, 25],
'Service_from': ['2/1/2016', '3/29/2016', '4/26/2016', '9/13/2016', '10/25/2016', '11/22/2016', '12/27/2016', '1/24/2017', '4/26/2017',
'2/21/2017', '4/11/2017', '4/26/2017', '5/1/2017', '5/1/2017', '9/26/2017', '11/26/2017', '1/24/2018', '4/26/2018', '9/5/2018']})
df['Service_from'] = pd.to_datetime(df['Service_from'])
, что приводит к
Member_ID Service_from
0 540 2016-02-01
1 540 2016-03-29
2 540 2016-04-26
3 540 2016-09-13
4 540 2016-10-25
5 540 2016-11-22
6 540 2016-12-27
7 540 2017-01-24
8 540 2017-04-26
9 540 2017-02-21
10 540 2017-04-11
11 25 2017-04-26
12 25 2017-05-01
13 25 2017-05-01
14 25 2017-09-26
15 25 2017-11-26
16 25 2018-01-24
17 25 2018-04-26
18 25 2018-09-05
, вы можете сделать
# Sort the data frame for convenience
df.sort_values(by=['Member_ID', 'Service_from'], inplace=True)
# Get the minimum Service_from per Member_ID
df.set_index('Member_ID', inplace=True)
df['Service_from_min'] = df.groupby(df.index)['Service_from'].min()
# Get the difference in days modulo 365
df['Diff'] = (df['Service_from'] - df['Service_from_min']).dt.days % 365
df.reset_index(inplace = True)
, что должно дать вам
Member_ID Service_from Service_from_min Diff
0 25 2017-04-26 2017-04-26 0
1 25 2017-05-01 2017-04-26 5
2 25 2017-05-01 2017-04-26 5
3 25 2017-09-26 2017-04-26 153
4 25 2017-11-26 2017-04-26 214
5 25 2018-01-24 2017-04-26 273
6 25 2018-04-26 2017-04-26 0
7 25 2018-09-05 2017-04-26 132
8 540 2016-02-01 2016-02-01 0
9 540 2016-03-29 2016-02-01 57
10 540 2016-04-26 2016-02-01 85
11 540 2016-09-13 2016-02-01 225
12 540 2016-10-25 2016-02-01 267
13 540 2016-11-22 2016-02-01 295
14 540 2016-12-27 2016-02-01 330
15 540 2017-01-24 2016-02-01 358
16 540 2017-02-21 2016-02-01 21
17 540 2017-04-11 2016-02-01 70
18 540 2017-04-26 2016-02-01 85
Вы также можете опустить столбец Service_from_min
, если он не нужен
df.drop('Service_from_min', axis=1, inplace=True)