如何根据新列的条件生成值?

我有以下数据框:


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 ”),其中的值将按照下面提到的原始数据框填充,


万千封印
浏览 1598回答 1
1回答

杨__羊羊

pandas.DataFrame.groupby.transformIIUC,与numpy.arange和一起使用numpy.argmax:df["Var"] = df.groupby("Chef_Id")["Transition"].transform(lambda x: np.arange(x.size) - np.argmax(x))print(df)输出:    Hotel_id      Month_Year  Chef_Id  Chef_is_masterchef  Transition  Var0    2400188   February-2018  4597566                   1           0   -71    2400188      March-2018  4597566                   1           0   -62    2400188      April-2018  4597566                   1           0   -53    2400188        May-2018  4597566                   1           0   -44    2400188       June-2018  4597566                   1           0   -35    2400188       July-2018  4597566                   1           0   -26    2400188     August-2018  4597566                   1           0   -17    2400188  September-2018  4597566                   0           1    08    2400188    October-2018  4597566                   0           0    19    2400188   November-2018  4597566                   0           0    210   2400188   December-2018  4597566                   0           0    311   2400188    January-2019  4597566                   0           0    412   2400188   February-2019  4597566                   0           0    513   2400188      March-2019  4597566                   0           0    614   2400188      April-2019  4597566                   0           0    715   2400188        May-2019  4597566                   0           0    816   2400614        May-2015  2297544                   0           0   -817   2400614       June-2015  2297544                   0           0   -718   2400614       July-2015  2297544                   0           0   -619   2400614     August-2015  2297544                   0           0   -520   2400614  September-2015  2297544                   0           0   -421   2400614    October-2015  2297544                   0           0   -322   2400614   November-2015  2297544                   0           0   -223   2400614   December-2015  2297544                   0           0   -124   2400614    January-2016  2297544                   1           1    025   2400614   February-2016  2297544                   1           0    126   2400614      March-2016  2297544                   1           0    227   3400624        May-2016  2597531                   0           0   -328   3400624       June-2016  2597531                   0           0   -229   3400624       July-2016  2597531                   0           0   -130   3400624     August-2016  2597531                   1           1    031   2400133   February-2016  4597531                   0           0   -632   2400133      March-2016  4597531                   0           0   -533   2400133      April-2016  4597531                   0           0   -434   2400133        May-2016  4597531                   0           0   -335   2400133       June-2016  4597531                   0           0   -236   2400133       July-2016  4597531                   0           0   -137   2400133     August-2016  4597531                   1           1    038   2400133  September-2016  4597531                   1           0    139   2400133    October-2016  4597531                   1           0    240   2400133   November-2016  4597531                   1           0    341   2400133   December-2016  4597531                   1           0    442   2400133    January-2017  4597531                   1           0    543   2400133   February-2017  4597531                   1           0    644   2400133      March-2017  4597531                   1           0    745   2400133      April-2017  4597531                   1           0    846   2400133        May-2017  4597531                   1           0    9
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python