Вы столкнетесь с проблемой, если у вас есть столбцы с неуникальными именами.
Демонстрация:
>>> df = pd.DataFrame([[1,2,3,4,5], [6,7,8,9,10]], columns=['A', 'B', 'A', 'C', 'B'])
>>> df
A B A C B
0 1 2 3 4 5
1 6 7 8 9 10
>>> df.loc[1].to_dict()
{'A': 8, 'B': 10, 'C': 9}
Если это может произойти в вашем фрейме данных, сделайте столбцы уникальными перед созданиемДикт.
Вот идея сделать это:
>>> from itertools import count
>>>
>>> col_isdupe = zip(df.columns, df.columns.duplicated(keep=False))
>>> counters = {c:count() for c, dupe in col_isdupe if dupe}
>>> df.columns = ['{}_{}'.format(c, next(counters[c])) if c in counters else c
...: for c in df.columns]
>>> df
A_0 B_0 A_1 C B_1
0 1 2 3 4 5
1 6 7 8 9 10
>>>
>>> df.loc[1].to_dict()
{'A_0': 6, 'A_1': 8, 'B_0': 7, 'B_1': 10, 'C': 9}