亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據每個id的條件選擇行

如何根據每個id的條件選擇行

開心每一天1111 2023-07-27 10:25:54
我有以下數據框: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 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

用于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? var

0? ? 2400614? ? ? ? May-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-8

1? ? 2400614? ? ? ?June-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-7

2? ? 2400614? ? ? ?July-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-6

3? ? 2400614? ? ?August-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-5

4? ? 2400614? September-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-4

5? ? 2400614? ? October-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-3

6? ? 2400614? ?November-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-2

7? ? 2400614? ?December-2015? 2297544? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-1

8? ? 2400614? ? January-2016? 2297544? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?1? ? 0

9? ? 2400614? ?February-2016? 2297544? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 1

10? ?2400614? ? ? March-2016? 2297544? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 2

11? ?3400624? ? ? ? May-2016? 2597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-3

12? ?3400624? ? ? ?June-2016? 2597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-2

13? ?3400624? ? ? ?July-2016? 2597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-1

14? ?3400624? ? ?August-2016? 2597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?1? ? 0

15? ?2400133? ?February-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-6

16? ?2400133? ? ? March-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-5

17? ?2400133? ? ? April-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-4

18? ?2400133? ? ? ? May-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-3

19? ?2400133? ? ? ?June-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-2

20? ?2400133? ? ? ?July-2016? 4597531? ? ? ? ? ? ? ? ? ?0? ? ? ? ? ?0? ?-1

21? ?2400133? ? ?August-2016? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?1? ? 0

22? ?2400133? September-2016? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 1

23? ?2400133? ? October-2016? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 2

24? ?2400133? ?November-2016? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 3

25? ?2400133? ?December-2016? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 4

26? ?2400133? ? January-2017? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 5

27? ?2400133? ?February-2017? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 6

28? ?2400133? ? ? March-2017? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 7

29? ?2400133? ? ? April-2017? 4597531? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ?0? ? 8

30? ?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)


查看完整回答
反對 回復 2023-07-27
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號