2017-01-12 2 views
1

Если у меня есть:Объединить две панды серии на основе отсутствующих данных

col1  col2 
0 1   np.nan 
1 2   np.nan 
2 np.nan  3 
4 np.nan  4 

Как бы эффективно добраться до:

col1  col2  col3 
0 1   np.nan 1 
1 2   np.nan 2 
2 np.nan  3  3 
4 np.nan  4  4 

Мое текущее решение:

test = pd.Series([1,2,np.nan, np.nan]) 

test2 = pd.Series([np.nan, np.nan, 3,4]) 

temp_df = pd.concat([test, test2], axis = 1) 


init_cols = list(temp_df.columns) 

temp_df['test3'] = "" 

for col in init_cols: 
    temp_df.ix[temp_df[col].fillna("") != "", 'test3'] = list(temp_df.ix[temp_df[col].fillna("") != "", col]) 

В идеале я хотелось бы избежать использования петель.

+1

вы хотите 'пеленгация [ 'col3'] = df.sum (ось = 1)' – EdChum

ответ

1

Это зависит от того, что вы хотите сделать, если каждый столбец имеет ненулевое значение.

принять col1 первый затем заполнить отсутствующий с col2

df['col3'] = df.col1.fillna(df.col2) 

col2 принять первый затем заполнить отсутствующий с col1

df['col3'] = df.col2.fillna(df.col1) 

среднего перекрытия

df['col3'] = df.mean(1) 

сумма Перекрытие

df['col3'] = df.sum(1) 
+0

Спасибо это работает, не понимал, что фулна будет работать так! – wingsoficarus116

Смежные вопросы