以正确的顺序按列展平分组
import pandas as pd
import numpy as np
df=pd.DataFrame({"item":['a','a','a','b'],"item1":['b','d',np.nan,'c']})
df_grp=df.groupby("item").agg({'item1' : ['last','count']})
df_grp.columns = df_grp.columns.map('_'.join)
df_grp.reset_index()
这给了我
item item1_last item1_count
0 a d 2
1 b c 1
我想要的是
item last_item1 count_item1
0 a d 2
1 b c 1
有没有更好的方法来实现这一目标?
回答
您可以swaplevel在加入列之前使用。
df_grp.columns = df_grp.columns.swaplevel().map('_'.join)
#df_grp.columns = df_grp.swaplevel(axis=1).columns.map('_'.join)
df_grp.columns = df_grp.columns.swaplevel().map('_'.join)
print(df_grp.reset_index())
item last_item1 count_item1
0 a d 2
1 b c 1