2017-05-28 3 views
1

Ich möchte zwischen den Indizes der Zeilen in zwei verschiedenen dfs übereinstimmen, und wenn die Indizes die gleichen sind, möchte ich zum zweiten df gehen, iterieren durch die Spalten und wenn die Der Wert einer Spalte ist 'V', gehe zum ersten df und füge den Namen des df zum Wert einer Spalte hinzu.Python Pandas passen zwei Indizes und Wert der Spalte

so zum Beispiel:

MAIN DF:

names col1 col2 col3 total 
bbb  V  V  X  2 
ccc  V  X  X  1 

DF2:

names col1 col2 col3 total 
bbb  V  V  X  2 
zzz  X  X  V  1 

so nach dem MAIN DF wird:

names col1 col2 col3 total totla_col1 total_col2 total_col3 
bbb  V  V  X  2   DF2   DF2   NULL 
ccc  V  X  X  1   NULL   NULL  NULL 

Antwort

1

Sie können erste Index von names Spalte von set_index, replace Werte von dict und add_prefix erstellen.

Dann join es original:

cols = ['col1','col2','col3'] 
DF2 = DF2.set_index('names')[cols].replace({'V':'DF2', 'X':np.nan}).add_prefix('total_') 
print (DF2) 
     total_col1 total_col2 total_col3 
names         
bbb   DF2  DF2  NaN 
zzz   NaN  NaN  DF2 

df = df.join(DF2, on='names') 
print (df) 
    names col1 col2 col3 total total_col1 total_col2 total_col3 
0 bbb V V X  2  DF2  DF2  NaN 
1 ccc V X X  1  NaN  NaN  NaN 
Verwandte Themen