[问题] 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