python - 分组依据,数据扩展到新列
问题描述
如何在 Python 或 R 中实现以下目标?
按姓氏和名字分组,并将地址和城市移动到分组行上的新列
姓 名 地址 城市 1 姓名 1 名字 1 地址 11 城市 11 2 姓名 1 姓名 1 地址 12 城市 12 3 姓名 2 姓名 2 地址 21 城市 21 4 姓名 2 名字 2 地址 22 城市 22 5 姓名 2 姓名 2 地址 23 城市 23
至:
姓 名 地址 城市 地址 城市 地址 城市 1 姓名1 名字1 地址11 城市11 地址12 城市12 2 姓名2 名字2 地址21 城市21 地址22 城市22 地址23 城市23
我不关心重复的列名,它可能看起来像那样或带有额外的地址编号
解决方案
在熊猫中:您可以使用groupby.cumcount()
辅助assign
系列,然后unstack()
使用列格式:
final=(df.assign(k=df.groupby(['Surname','Givename']).cumcount())
.set_index(['Surname','Givename','k']).unstack().sort_index(level=1,axis=1))
final.columns=[f'{a}_{b}' for a,b in final.columns.values]
print(final)
Address_0 City_0 Address_1 City_1 Address_2 City_2
Surname Givename
Name1 Givename1 Addr11 City11 Addr12 City12 NaN NaN
Name2 Givename2 Addr21 City21 Addr22 City22 Addr23 City23
注意:final=final.reset_index()
如果你想要Surname
andGivename
作为列而不是索引,你可以做一个。
推荐阅读
- javascript - 通过 CSS(网格支持)显示浏览器兼容性警报
- demo - 遥测适用于演示而不是在自己的服务器上
- r - 如何在 R 中时间序列图的点旁边添加值?
- android - Oreo 在一小时内安排通知
- java - 收集到列表,然后在 lambda 或消费者 java 8 中传递它
- python - 从python中的嵌套结构中构建一个带有pandas的数据框
- java - neo4j保存到数据库并在neo4j浏览器java中显示
- reactjs - 将 graphl 查询片段放入组件中的问题 (Gatsby+DatoCMS)
- eclipse - 如何部署 Eclipse 插件?
- symfony - 修复 symfony 中使用 SerializerInterface 时的循环引用