मैं एक timeindex और 3 एक 3 डी वेक्टर के निर्देशांक युक्त कॉलम के साथ एक dataframe है लागू होते हैं:पांडा समारोह है कि पांडा dataframe में पंक्तियों को एक से अधिक मान देता है
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)
एक पांडस श्रृंखला के साथ पी जिसका तत्व tuples हैं। यह बीकॉज लागू होगा बिना इसे अनपॅक किए Myfunc का परिणाम लेगा। मैं myfunc कैसे बदल सकता हूं ताकि मैं 3 कॉलम के साथ एक नया डीएफ प्राप्त कर सकूं?
संपादित करें:
काम ठीक नीचे स्थित सभी समाधान। श्रृंखला समाधान कॉलम नामों की अनुमति देता है, सूची समाधान तेजी से निष्पादित प्रतीत होता है।
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 पर हूँ –