У меня есть приведенный ниже кадр данных панд, и я хотел бы преобразовать его в последовательность элементов в один столбец без потери временного порядка столбцов id
и fruit
.
id fruit
---|------
101 apple
102 apple
101 watermelon
101 orange
102 orange
104 lemon
105 lemon
104 lemon
105 apple
103 grapes
Например, новый фрейм данных должен выглядеть следующим образом (*)
:
id col
101 apple, watermelon, orange
102 apple, orange
103 grapes
104 lemon, lemon
105 apple
Я пытался:
f = {'url' : lambda x: np.unique(x).tolist()}
df = df.groupby('id', as_index=False).agg(f).reindex(columns=df.columns)
def foo(row):
#just to remove the brackets
return ', '.join(row)
df4['url'] = df4['fruit'].apply(tweak)
df4
Однако, хотя это работает, когда я делаю:
list(df.loc[[362]]['fruit'])
Собранная информация в каждой строке не сортируется по времени (в соответствии с порядком появления в столбце fruit
).Таким образом, как я могу получить (*)?