अगर मैं एक समारोहभागो समारोह ठीक एक बार एक पांडा dataframe
def do_irreversible_thing(a, b):
print a, b
और एक dataframe है, का कहना है कि में प्रत्येक पंक्ति के लिए
df = pd.DataFrame([(0, 1), (2, 3), (4, 5)], columns=['a', 'b'])
वास्तव में क्या एक बार समारोह चलाने के लिए सबसे अच्छा तरीका है एक पांडा डेटाफ्रेम में प्रत्येक पंक्ति के लिए। As अन्य questions में इंगित किया गया है, df.apply पांडा जैसे कुछ पहले पंक्ति के लिए फ़ंक्शन को दो बार कॉल करेंगे। यहां तक कि
np.vectorize(do_irreversible_thing)(df.a, df.b)
numpy का उपयोग कर समारोह पहली पंक्ति पर दो बार के नाम से जाना, होगा के रूप में df.T.apply()
या df.apply (..., अक्ष = 1) का कारण बनता है।
क्या इस स्पष्ट लूप की तुलना में प्रत्येक पंक्ति के साथ फ़ंक्शन को कॉल करने का कोई तेज़ या क्लीनर तरीका है?
for idx, a, b in df.itertuples():
do_irreversible_thing(a, b)
है जैसे कि यह
apply
सकता विल नहीं 'df.apply (लैम्ब्डा एक्स: do_irreversible_thing (एक्स [ 'एक'] , एक्स ['बी']), अक्ष = 1) 'काम? विचार के अलावा अपने फ़ंक्शन में वेक्टरिज्ड विधियों का उपयोग करना है, इसलिए यह ब्याज के पूरे कॉलम पर काम करता है – EdChumयह 'for' लूप के लिए नौकरी की तरह लगता है। आमतौर पर दुष्प्रभावों को सदिश बनाने का एक अच्छा तरीका नहीं है। – user2357112
यदि साइड इफेक्ट्स प्रत्येक पंक्ति के लिए ऑपरेशन पर निर्भर नहीं हैं तो यह vectorizable – EdChum