[問題] dataframe appl能否返回數個df

作者: jasonhsu14 (小健人)   2021-03-31 15:26:00
版上各位好
我這邊在實際操作上碰到個需求
就是我該如何用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 內
還勞煩版友們解答,也謝謝願意花時間了解我問題的人
作者: TuCH (謬客)   2021-03-31 16:27:00
寫成一個df 再拆成幾個df?
作者: cuteSquirrel (松鼠)   2021-03-31 17:20:00
作者: TitanEric (泰坦)   2021-04-01 02:23:00
建議搜尋pandas apply return multiple columns
作者: liton (歐吉桑留學生)   2021-04-02 08:56:00
if 条件成立: a=df; else b=df;
作者: cuteSquirrel (松鼠)   2021-04-07 16:30:00
不客氣~

Links booklink

Contact Us: admin [ a t ] ucptt.com