У меня есть исходный размер кадра 4779657 (rows) and 26(columns)
.
Пожалуйста, найдите код для примера кадра данных
df = pd.DataFrame({
'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],
'readings' : ['READ_1','READ_2','READ_1','READ_3','READ_1','READ_5','READ_6','READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],
'val' :[5,6,7,11,5,7,16,12,13,56,32,13,45,43,46],
})
Пример кадра данных выглядит так, как показано ниже
Я хотел бы выполнить следующую операцию (от длинной до широкой). Из 26 столбцов (в реальных данных) я пытаюсь использовать предложение 3 columns in groupby
. спасибо @jezrael за помощь в достижении этого уровня
df1 = (df.groupby(['subject_id','readings'])['val']
.describe()
.unstack()
.swaplevel(0,1,axis=1)
.reindex(df['readings'].unique(), axis=1, level=0))
df1.columns = df1.columns.map('_'.join)
df1 = df1.reset_index()
Приведенный выше код выдает результат, подобный показанному ниже, который соответствует моему ожидаемому результату. Единственная проблема - производительность на большом наборе данных
Прошло более получаса, и код все еще выполняется. Моя системная информация 8 GB installed RAM
и процессор Intel Core i5-2500 CPU@3.30 GHZ
, если вы знаете, что это может помочь в любом случае
Можете ли вы помочь мне сделать этот код эффективным?