Не уверен, какой именно формат вы ожидаете, но вы можете использовать для этого списки и списки.
Сначала создайте некоторые данные.
import pandas as pd
import numpy as np
data = pd.DataFrame.from_dict({'Col1': (1, 2, 3), 'Col2': (4, 5, 6), 'Col3': (7, 8, np.nan)})
print(data)
Предоставление фрейма данных:
Col1 Col2 Col3
0 1 4 7.0
1 2 5 8.0
2 3 6 NaN
И затем мы создаем словарь с помощью итератора.
dict_1 = {x[0]: [y for y in x[1:] if not pd.isna(y)] for x in data.itertuples(index=True) }
print(dict_1)
>>>{0: [1, 4, 7.0], 1: [2, 5, 8.0], 2: [3, 6]}
Сделать то же самое для столбцов еще проще:
dict_2 = {data[column].name: [y for y in data[column] if not pd.isna(y)] for column in data}
print(dict_2)
>>>{'Col1': [1, 2, 3], 'Col2': [4, 5, 6], 'Col3': [7.0, 8.0]}