如何输出pandas中分组列之间的差异?

时间:2018-01-09 16:18:25

标签: python pandas dataframe

我有一个如下所示的DataFrame:

 Product Family   Date     Price Type    Price
 Cereal            2017-11           1     4.99
 Cereal            2017-12           1     4.59
 Cheese            2017-11           1     3.99
 Cheese            2017-12           2     3.99
 Oats              2017-11           3     5.99
 Oats              2018-12           3     5.99

数据按月分组。我想要的是输出/标记每个产品系列的价格类型与上个月不同的行。 所以在这个例子中,我希望返回这样的东西:

  Product Family   Date     Price Type    Price   Flag
  Cheese            2017-11           1     3.99  price type change
  Cheese            2017-12           2     3.99  price type change

我试图制定布尔语句并将其分配给“标记”列,但我不断收到错误,而且数据并没有比较每个产品系列的每个月。

1 个答案:

答案 0 :(得分:0)

df['Flag']=df.groupby('ProductFamily').PriceType.transform('nunique').gt(1).map({True:'Flag',False:'Not Flag'})
df
Out[59]: 
  ProductFamily     Date  PriceType  Price      Flag
0        Cereal  2017-11          1   4.99  Not Flag
1        Cereal  2017-12          1   4.59  Not Flag
2        Cheese  2017-11          1   3.99      Flag
3        Cheese  2017-12          2   3.99      Flag
4          Oats  2017-11          3   5.99  Not Flag
5          Oats  2018-12          3   5.99  Not Flag