Я думаю, что вам нужно только:
s.unstack().to_dict('index')
#.unstack(level = 0).to_dict()
где s - ваш сер ie
data.groupby(by=['version','sentiment']).score.count().unstack().to_dict()
Я использовал DataFrame для решения вашей проблемы
print(df)
i1 i2 col
0 10.1.2 negative 3.0
1 10.1.2 positive 8.0
2 10.2.0 negative 1.0
3 10.4.2 negative 1.0
4 10.4.3 negative 1.0
5 10.4.6 positive 1.0
6 10.5.1 negative 1.0
7 10.5.2 positive 1.0
8 10.5.5 negative 2.0
9 11.0 negative 1.0
10 11.2 negative 3.0
11 11.2 positive 1.0
12 11.3.1 negative 1.0
df.set_index(['i1','i2'])['col'].unstack().to_dict('index')
#{'10.1.2': {'negative': 3.0, 'positive': 8.0},
# '10.2.0': {'negative': 1.0, 'positive': nan},
# '10.4.2': {'negative': 1.0, 'positive': nan},
# '10.4.3': {'negative': 1.0, 'positive': nan},
# '10.4.6': {'negative': nan, 'positive': 1.0},
# '10.5.1': {'negative': 1.0, 'positive': nan},
# '10.5.2': {'negative': nan, 'positive': 1.0},
# '10.5.5': {'negative': 2.0, 'positive': nan},
# '11.0': {'negative': 1.0, 'positive': nan},
# '11.2': {'negative': 3.0, 'positive': 1.0},
# '11.3.1': {'negative': 1.0, 'positive': nan}}