2016-07-10 16 views
6

मैं डेटा फ्रेम निम्नलिखित है में एक्सेल VLOOKUP बराबर:पांडा

   A   B   C 
Index 
2001-06-30 100  2001-08-31  (=value of A at date B) 
2001-07-31 200  2001-09-30  ... 
2001-08-31 300  2001-10-31  ... 
2001-09-30 400  2001-11-30  ... 

कॉलम B स्तंभ A से दिनांक के होते हैं कुछ लोगों द्वारा आगे स्थानांतरित कर दिया। मैं कॉलम C उत्पन्न करना चाहता हूं जिसमें पर कॉलम A के मान शामिल हैं। (अधिमानतः तर्क में एक्सेल VLOOKUP फॉर्मूला ऐसा करेगा। मैं बस शिफ्ट (-2) की तलाश नहीं कर रहा हूं क्योंकि वास्तविकता में B और Index के बीच की शिफ्ट हमेशा बराबर नहीं होती है)।

मैंने df.loc['B', 'A'] की कोशिश की लेकिन यह संभवतः सरल और एक त्रुटि उत्पन्न करने की कोशिश की।

उत्तर

12

मुझे लगता है कि आप स्तंभ A द्वारा map की जरूरत है:

df['C'] = df.B.map(df.A) 
print (df) 
       A   B  C 
Index        
2001-06-30 100 2001-08-31 300.0 
2001-07-31 200 2001-09-30 400.0 
2001-08-31 300 2001-10-31 NaN 
2001-09-30 400 2001-11-30 NaN 

यह वही है के रूप में:

df['C'] = df.B.map(df.A.to_dict()) 
print (df) 
       A   B  C 
Index        
2001-06-30 100 2001-08-31 300.0 
2001-07-31 200 2001-09-30 400.0 
2001-08-31 300 2001-10-31 NaN 
2001-09-30 400 2001-11-30 NaN 
+0

धन्यवाद @jezrael, इस बिल्कुल ठीक काम कर रहा है। मुझे आश्चर्य है कि यह समाधान कहीं और खोजने के लिए आसान क्यों नहीं था। –

+0

हार्ड सवाल। शायद क्योंकि एक्सेल में इसका अलग-अलग नाम पांडा में है, लेकिन यह वही है - 'vlookup' बनाम' मानचित्र '। – jezrael