0

I apologize if this is a possible duplicate and a trivial question. I am trying to calculate the difference between diff column in my df for consecutive rows.

Here is my code for the same:

z = prac_df.sort_values(['customer_id', 'delivery_date'])

grouped = z.groupby('customer_id')
differences = []
for name, group in grouped:
    group = group.sort_values('delivery_date')
    for i in range(1, len(group)):
        diff = DeepDiff(group.iloc[i-1]['diff'], group.iloc[i]['diff'])
        if diff:
            differences.append(diff)
        else:
            differences.append('no change')

How can I add the differences back to my original df z?

1 Answers1

0

Sorry for my mistaken comment, Anyway you can do the following:

z['diff'] = 0
for name, group in grouped:
    d = ['first item']
    group = group.sort_values('delivery_date')
    for i in range(1, len(group)):
        diff = DeepDiff(group.iloc[i-1]['diff'], group.iloc[i]['diff']) 
        if diff:
            d.append(diff)
        else:
            d.append('no change')
    z.loc[group.index, 'diff'] = d

Note that you need a default value for first items

TanjiroLL
  • 1,354
  • 1
  • 5
  • 5