我有一個timeindex和包含三維向量的座標3列一數據幀:熊貓申請函數返回多個值的行中大熊貓數據幀
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)
我結束ü p與元素爲元組的Pandas系列。這是因爲應用程序將取消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
這不起作用。它返回一個其元素是列表的系列。我在熊貓0.18.1 –