作者jasonhsu14 (14号星期五的杰森)
看板Python
标题[问题] dataframe appl能否返回数个df
时间Wed Mar 31 15:26:00 2021
版上各位好
我这边在实际操作上碰到个需求
就是我该如何用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://webptt.com/cn.aspx?n=bbs/Python/M.1617175562.A.53D.html
1F:推 TuCH: 写成一个df 再拆成几个df? 03/31 16:27
想询问楼上的方法是想用产生数个column的方法再去拆吗?
但这样不是要先设好column的名称吗?
※ 编辑: jasonhsu14 (123.204.141.78 台湾), 03/31/2021 16:50:49
4F:推 TitanEric: 建议搜寻pandas apply return multiple columns 04/01 02:23
5F:→ 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
6F:→ cuteSquirrel: 不客气~ 04/07 16:30