python - 更改 DataFrame 的形状以进行分组
问题描述
我的问题如下。
资源 :
ID subID_1 value_1 subID_2 value_2 subID_3 value_3
-- ------- ------- -------- ------- ------- -------
A aaa 10 abb 30 acc 40
B baa 20 bbb 60 NaN NaN
C caa 50 NaN NaN NaN NaN
希望 :
ID subID values
-- ----- --------
A aaa 10
A abb 30
A acc 40
B baa 20
B bbb 60
C caa 50
我尝试使用'unstack()',但结果与我想要的不同。
请帮忙。
提前致谢
解决方案
ID
如有必要,从列创建索引DataFrame.set_index
,然后str.split
为 列创建索引MultiIndex
,因此可能由 重塑DataFrame.stack
。最后一次数据清理 - 双倍DataFrame.reset_index
- 首先用于删除 MultiIndex 的第二级,第二个用于从第一级删除的列MultiIndex
:
df = df.set_index('ID')
df.columns = df.columns.str.split('_', expand=True)
df = df.stack().reset_index(level=1, drop=True).reset_index()
print (df)
ID subID value
0 A aaa 10.0
1 A abb 30.0
2 A acc 40.0
3 B baa 20.0
4 B bbb 60.0
5 C caa 50.0
推荐阅读
- javascript - sinon.match() 不匹配对象与 Json.stringify 响应
- angular - 你将如何解决这个“承诺
' 不提供签名匹配 '(value: any): {} | PromiseLike<{}>" 错误 - c++ - 如何迭代没有开始/结束的容器?
- python-3.x - 通过 REST API 在 Google Cloud Platform 中更新 Cloud Armor 中的规则的 Python 脚本
- bash - 如果条件在 bash 脚本中为真,如何重新启动进程
- node.js - 如何从 JSON 创建 SOAP 请求正文?
- android - API 29 已弃用“getBitmap”。还有其他代码吗?
- reactjs - 如何在 ResultCard 中显示搜索结果中的详细信息页面?
- javascript - 动态分配 onsubmit 验证器
- android - 在 react-native 中更改为 androidX