Я работаю с большими наборами данных, делая функции панды и групповые функции занимают много времени/используют слишком много памяти. Я слышал, что некоторые люди говорят, что groupby может быть медленным, но мне трудно найти лучшее решение.Создание нового столбца в кадре данных pandas со списком значений из другого столбца без использования «groupby»
Если мой dataframe имеет 2 колонки, похожие на:
df = pd.DataFrame({'a':[1,2,2,4], 'b':[1,1,1,1]})
a b
1 1
2 1
2 1
4 1
Я хочу, чтобы возвращать список значений, которые соответствуют к значению в другой колонке:
a b list_of_b
1 1 [1]
2 1 [1,1]
2 1 [1,1]
4 1 [1]
настоящее время я использую:
df_group = df.groupby('a')
df['list_of_b'] = df.apply(lambda row: df_group.get_group(row['a'])['b'].tolist(), axis=1)
Код выше работает для мелочей, но не на больших кадрах данных (df> 1,000,000 строк) У вас более быстрый способ сделать это?
Создание списка значений является проблематичным из-за пандами, которые хотят, чтобы преобразовать это в серии и выровнять по индексу, вы могли бы попробовать 'ДФ [«list_of_b»] = df ['a']. map (df.groupby ('a') ['b']. apply (list)) 'для скорости – EdChum