Объединить 2 столбца в pandas в один столбец с данными в python

Я не уверен, как это сказать, но я пытаюсь объединить 2 столбца, скажем, из datafram df:

x1  x2
NaN  3
2    2
4    2
NaN  5
8    NaN

поэтому я хотел бы получить результат

X
3
2
4
5
8

Я пытался использовать pd.merge, но это не сработает. довольно новичок в python, можете ли вы указать мне, какая функция мне нужна в этой ситуации?


person JPC    schedule 05.12.2013    source источник
comment
Итак, если x1 и x2 оба не NaN, вам нужен x1?   -  person DSM    schedule 05.12.2013
comment
Ваша желаемая операция слияния (логически) максимальна?   -  person Rob Starling    schedule 05.12.2013
comment
да, я хотел бы захватить первый, который является x1   -  person JPC    schedule 05.12.2013


Ответы (1)


Из вашего вопроса неясно, хотите ли вы, чтобы x1 доминировало над x2 (моя первая догадка), или вам нужен максимум обоих столбцов (@предположение РобСтарлинга). Мы можем сделать и то, и другое. Чтобы увидеть разницу, мы немного изменим вашу рамку:

>>> df = pd.DataFrame({'x1': {0: np.nan, 1: 2.0, 2: 4.0, 3: 1, 4: 8.0}, 'x2': {0: 3.0, 1: 2.0, 2: 2.0, 3: 5.0, 4: np.nan}})
>>> df
   x1  x2
0 NaN   3
1   2   2
2   4   2
3   1   5
4   8 NaN

[5 rows x 2 columns]

Если вы хотите, чтобы x1 выиграл, мы можем использовать where -- мы хотим использовать x1 везде, где оно не равно нулю, и x2 в противном случае:

>>> df["x1"].where(~pd.isnull(df["x1"]), df["x2"])
0    3
1    2
2    4
3    1
4    8
Name: x1, dtype: float64

Если вам нужен максимум:

>>> df[["x1", "x2"]].max(axis=1)
0    3
1    2
2    4
3    5
4    8
dtype: float64
person DSM    schedule 05.12.2013