pandas - 将 groupby 中的某些列转换为 pandas 中的多级
问题描述
我有一个类似于以下数据框的 groupby 对象:
df = pd.DataFrame({'user1':[2,4,21,21],'user2':[6,13,76,76],'param1':[0,2,0,1],'param2':['x','a','a','d'],'count':[1
,3,2,1]}, columns=['user1','user2','param1','param2','count'])
df = df.set_index(['user1','user2','param1','param2'])
这使
count
user1 user2 param1 param2
2 6 0 x 1
4 13 2 a 3
21 76 0 a 2
1 d 1
我想要这样的东西:
param1 0 1 2
param2 a x d a
user1 user2
2 6 0 1 0 0
4 13 0 0 0 3
21 76 2 0 1 0
解决方案
Series.unstack
与按以下方式排序的列一起使用DataFrame.sort_index
:
df = df['count'].unstack([2,3], fill_value=0).sort_index(axis=1)
print (df)
param1 0 1 2
param2 a x d a
user1 user2
2 6 0 1 0 0
4 13 0 0 0 3
21 76 2 0 1 0
推荐阅读
- ios - 无法使用 tabbar swift 在当前上下文中显示控制器
- c# - Prism WPF:在启动时加载用户控件
- c++ - G++ 编译:在 Ubuntu 18.04 上未定义对 `ATL_<...>' 的引用
- java - 为什么 YAMLGenerator 不关闭流取决于配置
- oracle - Oracle 过程在多列中更改日期
- html - 在不同屏幕尺寸上调整文本大小的最佳做法
- reactjs - webpack 4 Hot Module Replacement 和 react-hot-loader 的区别
- azure - Azure 可用性集
- javascript - .find() 多重选择器无法添加道具
- javascript - 无法使用 setState 或 forceUpdate 重新渲染/刷新组件