Issue
suppose i have
list1 = [3, 4, 6, 8, 13]
in a for loop I want to subtract the value i from the value that comes right after. In the above example: 4-3, 6-4, 8-6, 13-8. (and i want to skip the first value) desired result
list2 = [3, 1, 2, 2, 5]
can i do this in a for loop / list comprehension?
more specifically do I want to do this in a dataframe
list1
0 3
1 4
2 6
3 8
4 13
and after the operation
list1 list2
0 3 3
1 4 1
2 6 2
3 8 2
4 13 5
I have tried for loops, lambda functions and list comprehensions and trying to access the positional index with enumerate() but I can't figure out how to access the value just before the value from which I want to subtract from
edit: answers below worked. thank you very much!
Solution
You should use shift
to access the next row:
df['list2'] = df['list1'].sub(df['list1'].shift(fill_value=0))
df['list2'] = df['list1'].diff().fillna(df['list1'])
Output:
list1 list2
0 3 3
1 4 1
2 6 2
3 8 2
4 13 5
For a pure python solution:
list1 = [3, 4, 6, 8, 13]
list2 = [a-b for a,b in zip(list1, [0]+list1)]
Output: [3, 1, 2, 2, 5]
Answered By - mozway
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.