首页 > 解决方案 > 通过列中的名称切片重塑 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 值索引。

当然这是一个小例子,但我正在寻找对更多变量(值总是在'_'之前)和纬度和经度(值总是在括号之间并用逗号分隔)有效的东西。

标签: pythonpandas

解决方案


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

推荐阅读