为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

万千封印 2023-08-22 14:47:56
我有以下数据框:Hotel_id    Month_Year      Chef_Id  Chef_is_masterchef  Transition2400188     February-2018   4597566     1                    02400188     March-2018      4597566     1                    02400188     April-2018      4597566     1                    02400188     May-2018        4597566     1                    02400188     June-2018       4597566     1                    02400188     July-2018       4597566     1                    02400188     August-2018     4597566     1                    02400188     September-2018  4597566     0                    12400188     October-2018    4597566     0                    02400188     November-2018   4597566     0                    02400188     December-2018   4597566     0                    02400188     January-2019    4597566     0                    02400188     February-2019   4597566     0                    02400188     March-2019      4597566     0                    02400188     April-2019      4597566     0                    02400188     May-2019        4597566     0                    02400614     May-2015        2297544     0                    02400614     June-2015       2297544     0                    02400614     July-2015       2297544     0                    02400614     August-2015     2297544     0                    02400614     September-2015  2297544     0                    02400614     October-2015    2297544     0                    02400614     November-2015   2297544     0                    02400614     December-2015   2297544     0                    02400614     January-2016    2297544     1                    12400614     February-2016   2297544     1                    02400614     March-2016      2297544     1                    0当Chef_is_Masterchef列中发生从0 到 1或1 到 0 的转换时,此转换在Transition列中指示为1。实际上,我想创建另一列(名为“ Var ”),其中的值将按照下面提到的原始数据框填充,
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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  Var

0    2400188   February-2018  4597566                   1           0   -7

1    2400188      March-2018  4597566                   1           0   -6

2    2400188      April-2018  4597566                   1           0   -5

3    2400188        May-2018  4597566                   1           0   -4

4    2400188       June-2018  4597566                   1           0   -3

5    2400188       July-2018  4597566                   1           0   -2

6    2400188     August-2018  4597566                   1           0   -1

7    2400188  September-2018  4597566                   0           1    0

8    2400188    October-2018  4597566                   0           0    1

9    2400188   November-2018  4597566                   0           0    2

10   2400188   December-2018  4597566                   0           0    3

11   2400188    January-2019  4597566                   0           0    4

12   2400188   February-2019  4597566                   0           0    5

13   2400188      March-2019  4597566                   0           0    6

14   2400188      April-2019  4597566                   0           0    7

15   2400188        May-2019  4597566                   0           0    8

16   2400614        May-2015  2297544                   0           0   -8

17   2400614       June-2015  2297544                   0           0   -7

18   2400614       July-2015  2297544                   0           0   -6

19   2400614     August-2015  2297544                   0           0   -5

20   2400614  September-2015  2297544                   0           0   -4

21   2400614    October-2015  2297544                   0           0   -3

22   2400614   November-2015  2297544                   0           0   -2

23   2400614   December-2015  2297544                   0           0   -1

24   2400614    January-2016  2297544                   1           1    0

25   2400614   February-2016  2297544                   1           0    1

26   2400614      March-2016  2297544                   1           0    2

27   3400624        May-2016  2597531                   0           0   -3

28   3400624       June-2016  2597531                   0           0   -2

29   3400624       July-2016  2597531                   0           0   -1

30   3400624     August-2016  2597531                   1           1    0

31   2400133   February-2016  4597531                   0           0   -6

32   2400133      March-2016  4597531                   0           0   -5

33   2400133      April-2016  4597531                   0           0   -4

34   2400133        May-2016  4597531                   0           0   -3

35   2400133       June-2016  4597531                   0           0   -2

36   2400133       July-2016  4597531                   0           0   -1

37   2400133     August-2016  4597531                   1           1    0

38   2400133  September-2016  4597531                   1           0    1

39   2400133    October-2016  4597531                   1           0    2

40   2400133   November-2016  4597531                   1           0    3

41   2400133   December-2016  4597531                   1           0    4

42   2400133    January-2017  4597531                   1           0    5

43   2400133   February-2017  4597531                   1           0    6

44   2400133      March-2017  4597531                   1           0    7

45   2400133      April-2017  4597531                   1           0    8

46   2400133        May-2017  4597531                   1           0    9


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信