python - 通过列中的名称切片重塑 DataFrame
问题描述
我无法弄清楚如何DataFrame
用很多变量、纬度和经度来重塑一个巨大的
Var1_(lat1, len1) Var2_(lat1, len1)
date1 date2
d1 d5 v1 v5
d2 d6 v2 v6
d3 d7 v3 v7
d4 d8 v4 v8
并将其重塑为
Var1 Var2
date1 date2 lat len
d1 d5 lat1 len1 v1 v5
d2 d6 lat1 len1 v2 v6
d3 d7 lat1 len1 v3 v7
d4 d8 lat1 len1 v4 v8
让这些变量也由 lat 和 len 值索引。
当然这是一个小例子,但我正在寻找对更多变量(值总是在'_'之前)和纬度和经度(值总是在括号之间并用逗号分隔)有效的东西。
解决方案
MultiIndex
首先使用 remove创建,()
然后Series.str.split
使用_
or ,
,因此可能 reshape by DataFrame.stack
,最后设置索引名称 by DataFrame.rename_axis
:
df.columns = df.columns.str.replace('\(|\)','').str.split('_|, ', expand=True)
df = df.stack(level=[1,2]).rename_axis(('date1','date2','lat','len'))
print (df)
Var1 Var2
date1 date2 lat len
d1 d5 lat1 len1 v1 v5
d2 d6 lat1 len1 v2 v6
d3 d7 lat1 len1 v3 v7
d4 d8 lat1 len1 v4 v8
推荐阅读
- python - Python脚本找不到导入的函数
- azure-aks - AKS 上的 SQL Server 2019 BDC 部署停留在检查控制器日志以获取更多详细信息
- reactjs - Laravel Echo 在 React 中没有收到 Pusher 事件
- macos - Matlab 2020a 在 Mac OS Catalina 上运行非常缓慢
- python - 你可以tripleclick()一个文本来选择python selenium中的一个段落吗?
- sql - Oracle SQL Lead Lag 跨组的历史数据
- windows - 更改新 Windows 终端的窗口大小
- python - 当我运行我的代码并输入错误的输入值时,我收到了一个无限的 while 循环。有谁知道为什么,以及如何解决它?
- c++ - 使用 C++ 类分段错误插入二叉搜索树
- python - Pandas:根据每个组的日期条件插入新行