अपने डेटा के कुछ लगता है कि:अजगर पांडा - विलय ज्यादातर दोहराया पंक्तियों
date, name, value1, value2, value3, value4
1/1/2001,ABC,1,1,,
1/1/2001,ABC,,,2,
1/1/2001,ABC,,,,35
मैं लेकिन, जहां मैं
data.set_index(['date', 'name'])
चला सकते हैं बात करने के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ के रूप में डेटा के साथ -इस, निश्चित रूप से डुप्लिकेट हैं (जैसा उपरोक्त में दिखाया गया है), इसलिए मैं यह नहीं कर सकता (और मैं डुप्लिकेट वाले इंडेक्स नहीं चाहता हूं, और मैं बस ड्रॉप-डुप्लिकेट() नहीं कर सकता, क्योंकि यह डेटा खो देगा)।
मैं उन पंक्तियों को मजबूर करने में सक्षम होना चाहूंगा जिनके पास एक ही पंक्ति में समान [तारीख, नाम] मान हैं, यदि उन्हें NaN होने वाले कुछ मूल्यों के आधार पर सफलतापूर्वक एकत्रित किया जा सकता है (combine_first() के व्यवहार के समान) । जैसे, ऊपर
date, name, value1, value2, value3, value4
1/1/2001,ABC,1,1,2,35
पर खत्म होगा दो मान भिन्न हैं और एक NaN नहीं है, तो दो पंक्तियों अभिसरित नहीं किया जाना चाहिए (यह शायद एक त्रुटि है कि मैं पर नजर रखने की आवश्यकता होगी होगा)।
(ऊपर के उदाहरण का विस्तार करने के लिए, वहाँ वास्तव में लाइनों की एक मनमाना संख्या हो सकता है - स्तंभों की एक मनमाना संख्या को देखते हुए -। जो एक ही पंक्ति में कन्वर्ज्ड जा करने के लिए सक्षम होना चाहिए)
यह महसूस करता है ऐसी समस्या की तरह जो पांडा के माध्यम से बहुत ही सुलभ हो, लेकिन मुझे एक सुरुचिपूर्ण समाधान की तलाश में परेशानी हो रही है।
धन्यवाद, यह निश्चित रूप से एक महत्वपूर्ण कदम को कम करता है। क्या ऐसा करने के लिए एक विशेष रूप से कुशल मुहावरे है? मेरे अनुभव में (और आपके सुझाव का उपयोग करके प्रारंभिक परीक्षण), .agg() वास्तव में धीमी निष्पादन (शायद असुरक्षित रूप से) हो सकता है। शायद अपरिहार्य? – severian
शायद? आप इसे गति देने के लिए बिल्टिन numpy फ़ंक्शंस ("sum", "max", आदि) का उपयोग करने का प्रयास कर सकते हैं (जो साइथोनिज्ड फ़ंक्शंस का उपयोग करता है)। यह संभवतः समूह के लिए सामान्य उपयोग के मामले के बाहर है क्योंकि आप शायद डेटाफ्रेम के कुल आकार के सापेक्ष कई समूहों के साथ समाप्त हो जाते हैं। –
ठीक है, एक और जवाब छोड़कर, कम से कम मुझे पता है कि मैंने कुछ भी स्पष्ट नहीं किया है ... – severian