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

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

從日期列創建月份列(但是日期列不包含月份信息)

從日期列創建月份列(但是日期列不包含月份信息)

慕工程0101907 2022-06-02 11:25:03
我有這樣的數據,并想創建一個名為“月”的列+---------+------------------+------+------+| Name    | Task             | Team | Date |+---------+------------------+------+------+| John    | Market study     | A    | 1    |+---------+------------------+------+------+| Michael | Customer service | B    | 1    |+---------+------------------+------+------+| Joanna  | Accounting       | C    | 1    |+---------+------------------+------+------+| John    | Accounting       | B    | 2    |+---------+------------------+------+------+| Michael | Customer service | A    | 2    |+---------+------------------+------+------+| Joanna  | Market study     | C    | 2    |+---------+------------------+------+------+| John    | Customer service | C    | 1    |+---------+------------------+------+------+| Michael | Market study     | A    | 1    |+---------+------------------+------+------+| Joanna  | Customer service | B    | 1    |+---------+------------------+------+------+| John    | Market study     | A    | 2    |+---------+------------------+------+------+| Michael | Customer service | B    | 2    |+---------+------------------+------+------+| Joanna  | Accounting       | C    | 2    |+---------+------------------+------+------+所以基本上,我有日期信息,但日期不包含它所屬的月份。但是,我知道如果它是第一次發生,那么它會屬于第 1 個月,如果它是第二次發生,那么它將屬于第 2 個月。所以例如,日期 1 發生了 3 次,然后被日期中斷2.所以前3次屬于第1個月,接下來的3次發生,屬于第2個月。所以我希望我的結果是這樣的:+---------+------------------+------+------+---------+| Name    | Task             | Team | Date | Month   |+---------+------------------+------+------+---------+| John    | Market study     | A    | 1    | Month 1 |+---------+------------------+------+------+---------+| Michael | Customer service | B    | 1    | Month 1 |+---------+------------------+------+------+---------+| Joanna  | Accounting       | C    | 1    | Month 1 |+---------+------------------+------+------+---------+| John    | Accounting       | B    | 2    | Month 1 |+---------+------------------+------+------+---------+除了使用一些循環之外,我沒有任何想法。謝謝你們。
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

如果我正確理解了這個問題,您可以執行以下操作:創建掩碼s以將每個連續值分成單獨的組。從,為每個組的每個值s創建掩碼。s1Groupby s1and Dateand doing cumcountandmap創建所需的輸出:


s = df.Date.ne(df.Date.shift()).cumsum()

s1 = df.Date.groupby(s).cumcount()


df['Month'] = df.groupby([s1, 'Date']).Name.cumcount().add(1).map(lambda x: 'Month '+str(x))


Out[897]:

       Name              Task Team  Date    Month

0      John      Market-study    A     1  Month 1

1   Michael  Customer-service    B     1  Month 1

2    Joanna        Accounting    C     1  Month 1

3      John        Accounting    B     2  Month 1

4   Michael  Customer-service    A     2  Month 1

5    Joanna      Market-study    C     2  Month 1

6      John  Customer-service    C     1  Month 2

7   Michael      Market-study    A     1  Month 2

8    Joanna  Customer-service    B     1  Month 2

9      John      Market-study    A     2  Month 2

10  Michael  Customer-service    B     2  Month 2

11   Joanna        Accounting    C     2  Month 2


查看完整回答
反對 回復 2022-06-02
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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