मुझे डर है कि ऐसा करने का यह सही तरीका नहीं हो सकता है, इसलिए किसी अन्य विचार का स्वागत है। लेकिन मेरे पास एक ऐसा फ़ंक्शन है जो कुछ गणना करने के लिए DataFrame लेता है। हालाँकि, अब मुझे एक और DataFrame पंक्तियों पर पुनरावृति करने और उस पंक्ति को उस फ़ंक्शन में पास करने की आवश्यकता है, लेकिन 1-टुपल DataFrame के रूप में:

मैंने कोशिश की:

for u in df.iterrows():
   foo(u)

लेकिन फू एक टपल है... मैं कई कदम उठा सकता हूं और डेटाफ्रेम (शायद) में परिवर्तित कर सकता हूं, लेकिन क्या पंक्तियों पर पुनरावृति करने और 1-लाइन डेटाफ्रेम लौटाने का एक साफ (या इससे बेहतर तरीका) है?

0
Dervin Thunk 22 नवम्बर 2019, 17:24
2
अधिक संक्षिप्त तरीका df.apply(lambda x: pd.Series(foo), axis=1) है। हालांकि, मेरी सामान्य सलाह foo को संशोधित करना है ताकि इसे वेक्टरकृत किया जा सके।
 – 
Quang Hoang
22 नवम्बर 2019, 17:32
1
क्या यह df.apply(lambda x: foo(pd.Series(x)), axis=1) नहीं होना चाहिए या, आपके कार्य के आधार पर, df.apply(lambda x: foo(pd.DataFrame(x).T), axis=1) जैसा कुछ नहीं होना चाहिए
 – 
Jonas
22 नवम्बर 2019, 17:37

2 जवाब

डेटाफ़्रेम की पंक्तियों के माध्यम से पुनरावृति करने की तुलना में लागू फ़ंक्शन का उपयोग करना बहुत अधिक कुशल है।

यह मानते हुए कि df आपका डेटाफ़्रेम है, आप इसे लिख सकते हैं:

df.apply(lambda x: foo(pd.DataFrame(x)), axis=1)
0
user3314148 22 नवम्बर 2019, 17:46

ये कोशिश करें:

import pandas as pd

df = pd.DataFrame([{'A':10, 'B':100}, {'A':11,'B':110}, {'A':12,'B':120}])

for index, row in df.iterrows():
    tpl = tuple([row['A'], row['B']])
0
TME 22 नवम्बर 2019, 17:54