pandas - 以正确的顺序按列展平分组
问题描述
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
推荐阅读
- css - CSS 打印 - 整个页面的拉伸表(高度 = 100%)
- ios - 计算集合视图单元格内的 tableView 高度
- android - 使用应用内计费隐藏广告横幅
- spring - Spring集成tcp-ip客户端实现
- php - jQuery 3.3.1 $.ajax 函数报错,不是函数报错,成功,完成回调
- express - Nginx 和 Express 为静态文件和节点应用程序提供服务
- sql - R和SQL如何只下载匹配的ID?
- matlab - 如何在 MATLAB 中创建相机飞越效果?
- vuetify.js - 尝试在 v-autocomplete 中显示预选元素时出错
- c++ - 是否可以将调用静态函数的模板成员函数的实现放在其标题中?