猿问

如何根据每个id的条件选择行

我有以下数据框:


Hotel_id    Month_Year      Chef_Id  Chef_is_masterchef  Transition

2400188     February-2018   4597566     1                    0

2400188     March-2018      4597566     1                    0

2400188     April-2018      4597566     1                    0

2400188     May-2018        4597566     1                    0

2400188     June-2018       4597566     1                    0

2400188     July-2018       4597566     1                    0

2400188     August-2018     4597566     1                    0

2400188     September-2018  4597566     0                    1

2400188     October-2018    4597566     0                    0

2400188     November-2018   4597566     0                    0

2400188     December-2018   4597566     0                    0

2400188     January-2019    4597566     0                    0

2400188     February-2019   4597566     0                    0

2400188     March-2019      4597566     0                    0

2400188     April-2019      4597566     0                    0

2400188     May-2019        4597566     0                    0



2400614     May-2015        2297544     0                    0

2400614     June-2015       2297544     0                    0

2400614     July-2015       2297544     0                    0

2400614     August-2015     2297544     0                    0

2400614     September-2015  2297544     0                    0

2400614     October-2015    2297544     0                    0

2400614     November-2015   2297544     0                    0

2400614     December-2015   2297544     0                    0

2400614     January-2016    2297544     1                    1

2400614     February-2016   2297544     1                    0

2400614     March-2016      2297544     1                    0


当Chef_is_Masterchef列中发生从0 到 1或1 到 0 的转换时,此转换在Transition列中指示为1。


实际上,我想创建另一列(名为“ Var ”),其中的值将按照下面提到的原始数据框填充,


开心每一天1111
浏览 85回答 1
1回答

ITMISS

用于GroupBy.cumcount每组计数器,然后0通过比较0和来减去值的数量GroupBy.transform:s = df['Chef_is_masterchef'].eq(0).groupby(df['Chef_Id']).transform('sum')df['var'] = df.groupby('Chef_Id').cumcount().sub(s)print (df)    Hotel_id      Month_Year  Chef_Id  Chef_is_masterchef  Transition  var0    2400614        May-2015  2297544                   0           0   -81    2400614       June-2015  2297544                   0           0   -72    2400614       July-2015  2297544                   0           0   -63    2400614     August-2015  2297544                   0           0   -54    2400614  September-2015  2297544                   0           0   -45    2400614    October-2015  2297544                   0           0   -36    2400614   November-2015  2297544                   0           0   -27    2400614   December-2015  2297544                   0           0   -18    2400614    January-2016  2297544                   1           1    09    2400614   February-2016  2297544                   1           0    110   2400614      March-2016  2297544                   1           0    211   3400624        May-2016  2597531                   0           0   -312   3400624       June-2016  2597531                   0           0   -213   3400624       July-2016  2597531                   0           0   -114   3400624     August-2016  2597531                   1           1    015   2400133   February-2016  4597531                   0           0   -616   2400133      March-2016  4597531                   0           0   -517   2400133      April-2016  4597531                   0           0   -418   2400133        May-2016  4597531                   0           0   -319   2400133       June-2016  4597531                   0           0   -220   2400133       July-2016  4597531                   0           0   -121   2400133     August-2016  4597531                   1           1    022   2400133  September-2016  4597531                   1           0    123   2400133    October-2016  4597531                   1           0    224   2400133   November-2016  4597531                   1           0    325   2400133   December-2016  4597531                   1           0    426   2400133    January-2017  4597531                   1           0    527   2400133   February-2017  4597531                   1           0    628   2400133      March-2017  4597531                   1           0    729   2400133      April-2017  4597531                   1           0    830   2400133        May-2017  4597531                   1           0    9最后过滤依据Series.between:df1 = df[df['var'].between(-3, 2)]print (df1)df2 = df[df['var'].between(-6, 5)]print (df2)
随时随地看视频慕课网APP

相关分类

Python
我要回答