2015-03-30 8 views
7

मुझे किसी अन्य डेटाफ्रेम से मूल्यों के साथ डेटाफ्रेम में नाएन के विकल्प को प्रतिस्थापित करने के लिए एक पांडा फ़ंक्शन (जिसे मैंने पहले देखा था) नहीं ढूंढ सकता (एक सामान्य इंडेक्स जो निर्दिष्ट किया जा सकता है)। कोई मदद?पांडस किसी अन्य डेटाफ्रेम से डेटा फ्रेम में लापता मान भरें

+0

लगता है जैसे आप एक विलय चाहते हैं। कृपया कुछ उदाहरण परिदृश्य दिखाएं। –

+0

इसे मिला! मैं combine_first – user308827

+1

का उपयोग करना चाहता था http://pandas.pydata.org/pandas-docs/dev/generated/pandas.Series.combine_first.html – user308827

उत्तर

11

आप एक ही आकार के दो DataFrames है, तो फिर:

df[df.isnull()] = d2 

चाल करना होगा।

visual representation

केवल उन स्थानों में जहां df.isnull()True (हरे रंग में हाइलाइट) का मूल्यांकन कार्य के लिए पात्र होंगे।

प्रैक्टिस में, डेटाफ्रेम हमेशा एक ही आकार/आकार नहीं होते हैं, और विधियों को बदलने (विशेष रूप से .shift()) उपयोगी होते हैं।

डेटा आने में हमेशा गंदे, अपूर्ण, या असंगत है। के बारे मे अपेक्षा। इन स्थितियों से निपटने के लिए tutorial and associated cookbook पर एक बहुत व्यापक पांडा है।

5

जैसा कि मैंने अभी सीखा है, वहाँ एक DataFrame.combine_first() विधि है, जो ठीक से करता है, अतिरिक्त संपत्ति के साथ है कि आपके अपडेट करना डेटा फ्रेम d2 बड़ा है अगर तुलना में अपने मूल df, अतिरिक्त पंक्तियों और स्तंभों जोड़ रहे हैं, साथ ही साथ।

df = df.combine_first(d2) 
3

DataFrame.combine_first() इस प्रश्न का उत्तर बिल्कुल ठीक है।

लेकिन, कभी कभी आप को भरने/बदलें/मूल्यों DataFrame बी से यही सवाल मुझे इस पृष्ठ पर लाया साथ DataFrame एक के गैर लापता (गैर NaN) मूल्यों के कुछ अधिलेखित करना चाहते हैं, और समाधान DataFrame.mask()

है
A = B.mask(condition, A) 

जब condition सत्य है, तो ए के मानों का उपयोग किया जाएगा, अन्यथा बी के मानों का उपयोग किया जाएगा।

उदाहरण के लिए, आप के साथ ओ पी के मूल प्रश्न का समाधान कर सकता mask ऐसी है कि एक से एक तत्व गैर NaN है जब, इसका इस्तेमाल, अन्यथा बी

से इसी तत्व का उपयोग लेकिन DataFrame.mask() का उपयोग कर आप बदल सकते ए के मूल्य जो बी से मूल्यों के साथ मनमाना मानदंडों (शून्य से कम? 100 से अधिक?) को पूरा करने में असफल हो जाते हैं। इसलिए mask अधिक लचीला है, और इस समस्या के लिए अधिक है, लेकिन मैंने सोचा कि यह उल्लेख करने योग्य है (मुझे इसे हल करने की आवश्यकता है मेरी समस्या)।

यह भी ध्यान रखना महत्वपूर्ण है कि बी डेटाफ्रेम के बजाय एक numpy array हो सकता है। DataFrame.combine_first() की आवश्यकता है कि बी डेटाफ्रेम हो, लेकिन DataFrame.mask() केवल यह आवश्यक है कि बी एक एनडीफ़्रेम है और इसके आयाम ए के आयामों से मेल खाते हैं।

संबंधित मुद्दे