Подходящее решение будет зависеть от того, хотите ли вы ряд строк или ряд списков.Вы можете использовать fillna
для первого и ffill
для второго случая:
df = pd.DataFrame({'col_1': ['abccd', 'mmdf', 'abccd', 'hhdy'],
'col_2': [np.nan, 'Hgfg', 'ddsx', np.nan]})
df['col_3'] = df['col_1'].map(str) + ',' + df['col_2'].fillna(df['col_1']).map(str)
df['col_4'] = df[['col_1', 'col_2']].ffill(1).values.tolist()
print(df)
col_1 col_2 col_3 col_4
0 abccd NaN abccd,abccd [abccd, abccd]
1 mmdf Hgfg mmdf,Hgfg [mmdf, Hgfg]
2 abccd ddsx abccd,ddsx [abccd, ddsx]
3 hhdy NaN hhdy,hhdy [hhdy, hhdy]
Применяются обычные заявления об отказе от ответственности: вам следует избегать списков вpd.Series
объектов, так как теперь у вас есть 2 слоя указателей в серии object
dtype.