По сути то же самое, что и ответ @ YOLO
def f(df):
s = df[['value','pos','id']].apply(tuple, axis=1)
return s.tolist()
g = df.groupby('sente')
q = g.apply(f)
>>> type(q)
<class 'pandas.core.series.Series'>
>>> q[21]
[('I', 'a', 1), ('have', 'b', 2), ('a', 'b', 3), ('cat', 'a', 4), ('!', 'd', 5)]
>>> q[22]
[('My', 'a', 1), ('cat', 'a', 2), ('is', 'b', 3), ('cute', 'a', 4), ('.', 'd', 5)]
>>> q.tolist()
[[('I', 'a', 1), ('have', 'b', 2), ('a', 'b', 3), ('cat', 'a', 4), ('!', 'd', 5)], [('My', 'a', 1), ('cat', 'a', 2), ('is', 'b', 3), ('cute', 'a', 4), ('.', 'd', 5)]]
>>>
>>> q.to_dict()
{21: [('I', 'a', 1), ('have', 'b', 2), ('a', 'b', 3), ('cat', 'a', 4), ('!', 'd', 5)], 22: [('My', 'a', 1), ('cat', 'a', 2), ('is', 'b', 3), ('cute', 'a', 4), ('.', 'd', 5)]}
>>>