У меня есть один фрейм данных с 1782568 различными группами.
Итак, когда я расплавляю эти данные по уровню группировки, мой ядро застряло.
Итак, я решил слить данныепо группам, а затем я объединю их все последовательно.
Для этого я написал следующую функцию.
def split(df,key):
df2=pd.DataFrame()
for i in range(df[key].drop_duplicates().shape[0]):
grp_key=tuple(df[key].drop_duplicates().iloc[i,:])
df1=df.groupby(key,as_index=False).
get_group(grp_key).reset_index().drop('index',axis=1)
df2=df2.append(df1.groupby(key,as_index=False).
apply(pd.melt,id_vars=key).reset_index()).dropna()
df2=df2.drop(grep('level',df2.columns),axis=1)
return(df2)
здесь grep - моя пользовательская функция, она работает как функция grepв R.
В df я передаю фрейм данных, а в ключе я передаю группирующие ключи в виде списка.
Но для завершения процесса функции также потребовалось очень много времени.
Может ли кто-нибудь помочь мне улучшить производительность.
Заранее спасибо.