Append по строке, с NaN

Допустим у меня есть вот такой датафрейм:

Пример датафрейма

Как сделать так что бы с момента первого вхождения, до самого конца строки была сумма массивов

Ну вот для примера, хотелось бы что бы наша третья строка (2 индекс) выглядел так: Пример результата


Ответы (1 шт):

Автор решения: CrazyElf

Наверняка можно сделать как-то короче, но у меня получилось только вот так, с преобразованием NaN в пустой список, а потом обратно:

import pandas as pd
import numpy as np

# генерируем данные
df = pd.DataFrame(np.random.randint(0, 20, (6,6))).applymap(lambda x: [x])
df.iloc[:,:2] = np.nan
print(df)

# объединение списков через cumsum, по идее там есть параметр skipna, но у меня что-то с ним не получилось
df = df.applymap(lambda x: [] if pd.isna(x) else x).cumsum(axis=1).applymap(lambda x: np.nan if x == [] else x)
print(df)

Вывод:

     0    1     2     3     4     5
0  NaN  NaN  [10]   [6]   [9]  [17]
1  NaN  NaN   [4]   [5]   [3]  [14]
2  NaN  NaN  [18]   [0]   [4]   [5]
3  NaN  NaN   [3]  [10]   [0]  [17]
4  NaN  NaN   [0]   [3]   [9]  [10]
5  NaN  NaN  [17]   [4]  [14]   [6]

    0   1     2        3            4               5
0 NaN NaN  [10]  [10, 6]   [10, 6, 9]  [10, 6, 9, 17]
1 NaN NaN   [4]   [4, 5]    [4, 5, 3]   [4, 5, 3, 14]
2 NaN NaN  [18]  [18, 0]   [18, 0, 4]   [18, 0, 4, 5]
3 NaN NaN   [3]  [3, 10]   [3, 10, 0]  [3, 10, 0, 17]
4 NaN NaN   [0]   [0, 3]    [0, 3, 9]   [0, 3, 9, 10]
5 NaN NaN  [17]  [17, 4]  [17, 4, 14]  [17, 4, 14, 6]
→ Ссылка