Есть ли способ заполнить NAN в конце столбца значениями из другого столбца в начале в Python?

#python

Вопрос:

Итак, у меня есть две колонки, например A amp; B, и они выглядят так:

 A B 1 4 2 5 3 6 NaN NaN NaN NaN NaN NaN  

и я хочу, чтобы это было так:

 A 1 2 3 4 5 6  

Есть какие-нибудь идеи?

Ответ №1:

Я предполагаю, что ваши данные находятся в двух столбцах в фрейме данных, вы можете добавить значения B в конец значений A, а затем удалить значения NA с помощью np.nan != трюк np.nan. Вот пример

 import pandas as pd import numpy as np d = {  'A': [1,2,3, np.nan, np.nan, np.nan],  'B': [4,5,6, np.nan, np.nan, np.nan] } df = pd.DataFrame(d) gt;gt;gt; df A B 1 4 2 5 3 6 NaN NaN NaN NaN NaN NaN  # np.nan == np.nan trick  gt;gt;gt; df['A'] == df['A'] 0 True 1 True 2 True 3 False 4 False 5 False Name: A, dtype: bool  x = pd.concat([df['A'], df['B']]) gt;gt;gt; x 0 1.0 1 2.0 2 3.0 3 NaN 4 NaN 5 NaN 0 4.0 1 5.0 2 6.0 3 NaN 4 NaN 5 NaN dtype: float64  x = x[x == x] gt;gt;gt; x A 1 2 3 4 5 6  

Ответ №2:

Используя numpy, это может быть что-то вроде:

 import numpy as np  A = np.array([1, 2, 3, np.nan, np.nan, np.nan]) B = np.array([4, 5, 6, np.nan, np.nan, np.nan])  C = np.hstack([A[A lt; np.infty], B[B lt; np.infty]]) print(C) # [1. 2. 3. 4. 5. 6.]  

Ответ №3:

Что вам может понадобиться, так это:

import pandas as pd

a = pd.Series([1, 2, 3, None, None, None])

b = pd.Series([4, 5, 6, None, None, None])

print(pd.concat([a.iloc[:3], b.iloc[:3]]))

И если вы просто ищете значения, отличные от NaN, не стесняйтесь использовать .dropna() последовательно.