2015-07-11 4 views
2

У меня есть два dataframes, как это:панды два dataframes, своего рода слияния

df['one'] = [1,2,3,4,5] 
df['two'] = [nan, 15, nan, 22, nan] 

мне нужен какой-то присоединиться или объединить, который даст мне dataframe так:

df['result'] = [1,15,3,22,5] 

любые идеи ?

+0

Другой вариант: 'df.two.fillna (df.one)' –

ответ

2

Вы можете использовать np.where для этого. Поэтому, если df.two - NaN, вы используете значение df.one, в противном случае используйте df.two.

import pandas as pd 
import numpy as np 

# your data 
# ======================================== 
df = pd.DataFrame(dict(one=[1,2,3,4,5], two=[np.nan, 15, np.nan, 22, np.nan])) 
print(df) 


    one two 
0 1 NaN 
1 2 15 
2 3 NaN 
3 4 22 
4 5 NaN  


# processing 
# ========================================  
df['result'] = np.where(df.two.isnull(), df.one, df.two) 


    one two result 
0 1 NaN  1 
1 2 15  15 
2 3 NaN  3 
3 4 22  22 
4 5 NaN  5  
+0

спасибо моему другу, что это именно то, что Мне было нужно!! – markan3

+0

@ markan3 Добро пожаловать. Рад, что это помогло. :-) –

2

Вы можете использовать метод панд combine_first() заполнить недостающие значения из DataFrame или серии со значениями от другого; В этом случае, вы хотите, чтобы заполнить недостающие значения в df['two'] с соответствующими значениями в df['one']:

In [342]: df['result']= df['two'].combine_first(df['one']) 

In [343]: df 
Out[343]: 
    one two result 
0 1 NaN  1 
1 2 15  15 
2 3 NaN  3 
3 4 22  22 
4 5 NaN  5 
Смежные вопросы