以正确的顺序按列展平分组

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


以上是以正确的顺序按列展平分组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>