использование функции melt в groupby для больших наборов данных в python - PullRequest
0 голосов
/ 06 октября 2018

У меня есть один фрейм данных с 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 я передаю фрейм данных, а в ключе я передаю группирующие ключи в виде списка.

Но для завершения процесса функции также потребовалось очень много времени.

Может ли кто-нибудь помочь мне улучшить производительность.

Заранее спасибо.

...