根据另一列中的条件,使用.diff()函数的结果在pandas-df中创建一个新列



我需要将函数.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

最新更新