看板 Python 關於我們 聯絡資訊
例如我有以下資料 日期 地區 銷售額 2019-9 台北 100 2019-10 台北 101 2019-11 台北 102 2019-9 台中 111 2019-10 台中 112 2019-11 台中 113 2019-12 台中 114 我知道可以用data.groupby(by='地區').mean().reset_index() 這樣取地區的平均 但是我希望抓取季的平均的話 可以指定的月份進行平均嗎 例如抓取2019-9 到 2019-11月三個月平均 目前我是用while進行月份判斷再抓取資料來平均 但是希望看能不能用dataframe的方法就可以解決了 請問有比較好的方式處理嗎? 感謝各位幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.65.108 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1594095475.A.66E.html
jiyu520: 先依照你要的規則做一個col, 然後使用該col做group 07/07 13:11
yiche: 參考https://i.imgur.com/hbgLquu.jpg 07/07 14:07
mthsieh: 將 date 設為 datetime index, 再用 groupyby([pd.Groupe 07/07 19:57
mthsieh: r(), '地區']) 處理 07/07 19:57
感謝三位的幫忙解答, 另外想請問,由於有可能有些資料是不夠一季的話 有辦法剔除嗎 日期 地區 銷售額 2019-9 台北 100 2019-10 台北 101 2019-9 台中 111 2019-10 台中 112 2019-11 台中 113 2019-12 台中 114 例如我想抓取2019-9到2019-11的每地區三個月平均 但是台北只有兩個月的資料,那這樣有辦法剔除台北, 只保留有夠三個月資料的地區用來抓取平均值嗎? 我是試著抓取count來嘗試,但是就不曉得如何用count的結果來剔除不需要的地區 df_count = df.groupby(['city']).size().reset_index(name='count') ※ 編輯: sutekidesune (180.217.197.185 臺灣), 07/07/2020 21:12:37
mthsieh: df.groupby('地區').filter(lambda x: x['銷售額'].count 07/07 21:57
mthsieh: > 2).groupby('地區')['銷售額'].mean() 07/07 21:57
感謝m大幫忙, 立刻來嘗試看看 謝謝 ※ 編輯: sutekidesune (180.217.197.185 臺灣), 07/07/2020 22:08:04 ※ 編輯: sutekidesune (180.217.197.185 臺灣), 07/07/2020 22:09:48 解決了 感謝m大 不過有個小地方有錯誤 filter(lambda x: x['銷售額'].count > 2) ^^^^^ 要改成size才能使用 ※ 編輯: sutekidesune (180.217.197.185 臺灣), 07/07/2020 22:49:04