Вы можете использовать groupby
+ apply
, чтобы получить новый объект Series, например:
import pandas as pd
df = pd.DataFrame({'id': [1, 1, 2, 2],
'month': [2, 2, 4, 6],
'value': [4, 5, 4, 3],
})
res = df.groupby('id').apply(
lambda group: [[group.month[i], group.value[i]] for i in range(len(group))])
Вывод:
id
1 [[2, 4], [2, 5]]
2 [[4, 4], [6, 3]]
dtype: object
Или вы можете использовать тот же groupby
+ apply
комбинация для получения подобного Dataframe, например:
import pandas as pd
df = pd.DataFrame({'id': [1, 1, 2, 2],
'month': [2, 2, 4, 6],
'value': [4, 5, 4, 3],
})
res = df.groupby('id').apply(
lambda group: pd.DataFrame(
{'result': [[[group.month[i], group.value[i]] for i in range(len(group))]]}))
res.index = res.index.droplevel(1)