2016-07-10 17 views
6

I po ramce danych:Excel VLOOKUP równoważne pand

   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  ... 

Kolumna B składa się z kolumny dat A przestawiony o około. Chciałbym wygenerować kolumnę C, która składa się z wartości z kolumny A na date B. (najlepiej w logice użyłoby to formuły VLOOKUP programu Excel, nie szukam tu po prostu zmiany (-2), ponieważ w rzeczywistości przesunięcie między B i Index nie zawsze jest równe).

Próbowałem df.loc['B', 'A'], ale to najprawdopodobniej uprościło i spowodowało błąd.

Odpowiedz

12

myślę, że trzeba map przez kolumnę A:

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 

To jest taki sam jak:

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

dziękuję @jezrael ta działa perfekcyjnie. Zastanawiam się, dlaczego to rozwiązanie nie było łatwiejsze znaleźć gdzie indziej. –

+0

Trudne pytanie. Może dlatego, że w programie Excel ma inne imię jak w pandach, ale jest takie samo - 'vlookup' kontra' map'. – jezrael