多指数到Pandas Dataframe中的不同列

时间:2015-11-16 18:59:00

标签: python pandas dataframe multi-index python-xarray

在我通过netCDF阅读了xray文件后,我得到了一张dataframe的pandas multiindex,如下所示:

                   temp
date       lat lon                            
2012-01-01 54  10  206
               11  207
           55  10  210
               11  214
2012-01-02 54  10  206
...                ...

现在我想将multiindex转换为不同的列来进行统计操作。我希望得到这样的pd dataframe

           temp_54_10 temp_54_11 temp_55_10 temp_55_11
date                                  
2012-01-01 206        207        210        214
2012-01-02 206        208        213        220
...                                         ...

只有使用pandas或dataframe工具才能获得此类xray,如果是,我该怎么办呢?

提前致谢:)

P.S。我使用python 3.5.0pandas 0.17.0xray 0.6.1

1 个答案:

答案 0 :(得分:1)

尝试取消堆叠。这假设您的数据框名为df

>>> df.unstack(['lat', 'lon'])
          temp               
lat         54        55     
lon         10   11   10   11
date                         
2012-1-1   206  207  210  214
2012-1-2   206  NaN  NaN  NaN

如果您想加入lat_lon值,可以按如下方式进行:

df.reset_index(inplace=True)
df['lat_lon'] = ["{0}_{1}".format(lat, lon) for lat, lon in zip(df.lat, df.lon)]
>>> df.pivot(index='date', columns='lat_lon', values='temp')
lat_lon   54_10  54_11  55_10  55_11
date                                
2012-1-1    206    207    210    214
2012-1-2    206    NaN    NaN    NaN