我有一个包含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是我的用户定义函数,它在R中作为grep函数工作。
在df中,我将传递数据帧,在密钥中,我将传递列表格式的分组密钥。
但是该功能也花费大量时间来完成该过程。
任何人都可以帮助我提高性能。
谢谢。