[問題]groupby 做邏輯判斷?

看板Python作者 (genechen)時間5年前 (2020/05/03 16:46), 編輯推噓4(4010)
留言14則, 5人參與, 5年前最新討論串1/1
各位大大好 小弟有個時間序列的資料 範例如下: https://i.imgur.com/1Z6Or19.jpg
小弟想做的事是要算每個月各公司市值的中位數 若公司大於等於中位數則新的column給 值’big’,反之則’small’ 想完成的感覺如下圖: https://i.imgur.com/1urJNVp.jpg
小弟想應該是要先把date groupby起來,但不知道該如何做後續的邏輯判斷 請各位大大指教了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.146.107 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1588495612.A.C6E.html

05/03 20:09, 5年前 , 1F
你用pandas嗎?這兩個表除了多了B/S欄差在哪?你的B/S決定的
05/03 20:09, 1F

05/03 20:09, 5年前 , 2F
條件是?
05/03 20:09, 2F

05/03 22:27, 5年前 , 3F
樓上你沒看內文齁
05/03 22:27, 3F

05/04 01:37, 5年前 , 4F
是用pandas的 後來我是用join把groupby之後的series加
05/04 01:37, 4F

05/04 01:37, 5年前 , 5F
到原本的df再做邏輯判斷 不知道有沒有更好的作法?
05/04 01:37, 5F

05/04 12:52, 5年前 , 6F
如果是用data[B/S] = data[MarketValue].apply(lambda
05/04 12:52, 6F

05/04 12:52, 5年前 , 7F
x:True if x >np.median(data[MarketValue]) else Fa
05/04 12:52, 7F

05/04 12:52, 5年前 , 8F
lse) 呢?
05/04 12:52, 8F

05/04 12:53, 5年前 , 9F
*>=
05/04 12:53, 9F

05/12 10:05, 5年前 , 10F
for date, tempdf in data.groupby("date"):
05/12 10:05, 10F

05/12 10:05, 5年前 , 11F
BS = tempdf["Price"] > tempdf["Price"].median()
05/12 10:05, 11F

05/12 10:06, 5年前 , 12F
df.loc[BS.index,"B/S"] = BS
05/12 10:06, 12F

05/12 10:06, 5年前 , 13F
打錯df改成date data.loc[BS.index,"BS"] = BS
05/12 10:06, 13F

05/12 10:07, 5年前 , 14F
把groupby 當iter for loop 判斷邏輯直接輸入data
05/12 10:07, 14F
文章代碼(AID): #1UheJynk (Python)
文章代碼(AID): #1UheJynk (Python)