看板 Python 關於我們 聯絡資訊
版上各位好 我這邊在實際操作上碰到個需求 就是我該如何用apply 搭配自定義的function去返回數個df 我知道可以用 df[['A1', 'A2']]=df.apply(func) 然後func只要 return pd.Series([a1, a2]) 這樣就可以一次產生數個column 但我現在問題是在於說 我該如何產生數個df 就是我希望 df1, df2 = df.apply(func) 但這樣我不知道該如何操作 我先簡述一下概況,假若我手頭上有一個dataframe 每一個column 各是不同種類的商品 index則是按照先後順序排列 假設如下: import pandas as pd df = pd.DataFrame({ 'A': [101, 102, 99, 100, 105], 'B': [27, 31, 33, 34, 40], 'C': [300, 211, 203, 299, 254] }) 然後我又自定義一個計算過程 但這計算過程中,可能會產出數個不同資訊 然後我想將這些 資訊各自存成一個df 舉個例來說,我定義一個function 如下 def test(s): for i , val in s.iteritems(): x=10 // val y= 1 if val - (x*1000) > 3 else -1 然後我希望將 x 跟 y的結果另外存成兩個df 這樣我就會有一個df是 A B C 的x 跟 A B C 的y 但...不知道該如何才能將結果返回成兩個df 因此想詢問版上大大們,python該如何有辦法達到上述的訴求 或是若不行的話,有甚麼建議的方式可以達到一樣的效果 目前我只想到就寫兩個def function 但因為我想說這兩個function有很多重複到的地方 所以想說就不要那麼拖時間,就寫在一個def 內 還勞煩版友們解答,也謝謝願意花時間了解我問題的人 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.204.141.78 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1617175562.A.53D.html
TuCH: 寫成一個df 再拆成幾個df? 03/31 16:27
想詢問樓上的方法是想用產生數個column的方法再去拆嗎? 但這樣不是要先設好column的名稱嗎? ※ 編輯: jasonhsu14 (123.204.141.78 臺灣), 03/31/2021 16:50:49
cuteSquirrel: 試試看: https://pastebin.com/dUiXYqGC 03/31 17:20
cuteSquirrel: https://pasteboard.co/JV8HWf1.png 03/31 17:22
TitanEric: 建議搜尋pandas apply return multiple columns 04/01 02:23
liton: if 条件成立: a=df; else b=df; 04/02 08:56
謝謝樓上各位的解答,目前cute大大的方法跟我的需求比較貼近 也感謝cute大大花時間寫code供參考 ※ 編輯: jasonhsu14 (220.129.194.195 臺灣), 04/03/2021 14:14:22
cuteSquirrel: 不客氣~ 04/07 16:30