python - 如何通过使用熊猫添加列将多行组合成单行?
问题描述
我需要将多行与熊猫组合成一行,具体取决于“哈希”列
我的数据框视图:
hash a b
0 1 1 6
1 1 2 7
2 1 3 8
3 2 4 9
4 2 5 10
我希望数据框像这样转换:
hash a a1 a3 b b1 b2
0 1 1 2 3 6 7 8
1 2 4 5 nan 9 10 nan
我曾尝试使用一些与 groupby 相关的代码或转置整个数据帧,但不知道该怎么做。任何人都可以帮助我吗?
解决方案
创建MultiIndex
by set_index
with counter column by cumcount
, reshape byunstack
和 flatten Multiindex
by map
with join
:
df1 = df.set_index(['hash', df.groupby('hash').cumcount().add(1).astype(str)]).unstack()
df1.columns = df1.columns.map(''.join)
df1 = df1.reset_index()
print (df1)
hash a1 a2 a3 b1 b2 b3
0 1 1.0 2.0 3.0 6.0 7.0 8.0
1 2 4.0 5.0 NaN 9.0 10.0 NaN
推荐阅读
- jwt - auth0 node-jsonwebtoken 中的选项 notBefore 有什么用?
- rx-java2 - 如何使用来自另一个可观察 rx kotlin 的结果过滤可观察发出的列表?
- javascript - Vuejs 数组渲染
- c# - LINQ 更改 dict 中的 KeyValuePair
- c# - unity transform.up 不旋转
- generics - 如何强制客户端代码使用合约初始化 Kotlin 中所有必需的构建器字段?
- delphi - Delphi:挂钩 TImageList 以按需加载图像
- debugging - 当执行的代码在函数内部时,Pycharm 断点挂起
- laravel - 在模型属性上创建 ware 子句
- mysql - Heroku + Docker - 无法连接到 db:3306 上的 MySQL 服务器