我需要将函数.diff((应用于列。如果另一列中的行值等于同一列的前一行。
示例:
import pandas as pd
import numpy as np
df=pd.DataFrame({'A':['Shrimp', 'Shrimp', 'Shrimp','Octopus','Octopus','Fish','Fish'],
'B':[10,11,15,25,30,5,15]})
df['C'] = (lambda x: x['B'].diff() if x['A'] == x['A'].shift(1) else 0)
基本上,我要找的是根据上次购买的每种产品的价格差异。我已经按产品和日期对DF进行了排序。
现在我对DF做了.diff((,但当产品发生变化时,它无论如何都会应用函数,所以我需要一个条件,如果前一行是不同的产品,那么就不能应用该函数。
这就是您想要的吗?
>>> df['C'] = df.groupby('A')['B'].diff().fillna(0)
>>> df
A B C
0 Shrimp 10 0.0
1 Shrimp 11 1.0
2 Shrimp 15 4.0
3 Octopus 25 0.0
4 Octopus 30 5.0
5 Fish 5 0.0
6 Fish 15 10.0