gpt4 book ai didi

python - Pandas 应用函数将多个值返回到 Pandas 数据框中的行

转载 作者:IT老高 更新时间:2023-10-28 21:37:37 25 4
gpt4 key购买 nike

我有一个包含时间索引和 3 列的数据框,其中包含 3D 矢量的坐标:

                         x             y             z
ts
2014-05-15 10:38 0.120117 0.987305 0.116211
2014-05-15 10:39 0.117188 0.984375 0.122070
2014-05-15 10:40 0.119141 0.987305 0.119141
2014-05-15 10:41 0.116211 0.984375 0.120117
2014-05-15 10:42 0.119141 0.983398 0.118164

我想对也返回向量的每一行应用一个转换

def myfunc(a, b, c):
do something
return e, f, g

但如果我这样做:

df.apply(myfunc, axis=1)

我最终得到了一个以元组为元素的 Pandas 系列。这是因为 apply 将获取 myfunc 的结果而不解包它。如何更改 myfunc 以获得具有 3 列的新 df?

编辑:

以下所有解决方案均有效。 Series 解决方案确实允许列名,List 解决方案似乎执行得更快。

def myfunc1(args):
e=args[0] + 2*args[1]
f=args[1]*args[2] +1
g=args[2] + args[0] * args[1]
return pd.Series([e,f,g], index=['a', 'b', 'c'])

def myfunc2(args):
e=args[0] + 2*args[1]
f=args[1]*args[2] +1
g=args[2] + args[0] * args[1]
return [e,f,g]

%timeit df.apply(myfunc1 ,axis=1)

100 loops, best of 3: 4.51 ms per loop

%timeit df.apply(myfunc2 ,axis=1)

100 loops, best of 3: 2.75 ms per loop

最佳答案

返回 Series 并将它们放入 DataFrame 中。

def myfunc(a, b, c):
do something
return pd.Series([e, f, g])

这样做的好处是您可以为每个结果列添加标签。如果您返回一个 DataFrame,它只会为该组插入多行。

关于python - Pandas 应用函数将多个值返回到 Pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com