pandas 使用panel 报错 Panel is deprecated and will be removed in a future version.

Panel is deprecated and will be removed in a future version.
The recommended way to represent these types of 3-dimensional data are with a MultiIndex on a DataFrame, via the Panel.to_frame() method
Alternatively, you can use the xarray package http://xarray.pydata.org/en/stable/.
Pandas provides a `.to_xarray()` method to help automate this conversion.

--------------------------------------

上面说的意思:panel在新版本中被xarray的包取代了。可以使用xarray包下的 to_xarray() 方法。

使用方法,例子:

----------官方文档--------------------

pandas.Panel.to_xarray

Panel.to_xarray()[source]

    Return an xarray object from the pandas object.
    Returns:	

    xarray.DataArray or xarray.Dataset

        Data in the pandas structure converted to Dataset if the object is a DataFrame, or a DataArray if the object is a Series.

    See also

    DataFrame.to_hdf
        Write DataFrame to an HDF5 file.
    DataFrame.to_parquet
        Write a DataFrame to the binary parquet format.

    Notes

    See the xarray docs

    Examples

    >>> df = pd.DataFrame([('falcon', 'bird',  389.0, 2),
    ...                    ('parrot', 'bird', 24.0, 2),
    ...                    ('lion',   'mammal', 80.5, 4),
    ...                    ('monkey', 'mammal', np.nan, 4)],
    ...                    columns=['name', 'class', 'max_speed',
    ...                             'num_legs'])
    >>> df
         name   class  max_speed  num_legs
    0  falcon    bird      389.0         2
    1  parrot    bird       24.0         2
    2    lion  mammal       80.5         4
    3  monkey  mammal        NaN         4

    >>> df.to_xarray()
    <xarray.Dataset>
    Dimensions:    (index: 4)
    Coordinates:
      * index      (index) int64 0 1 2 3
    Data variables:
        name       (index) object 'falcon' 'parrot' 'lion' 'monkey'
        class      (index) object 'bird' 'bird' 'mammal' 'mammal'
        max_speed  (index) float64 389.0 24.0 80.5 nan
        num_legs   (index) int64 2 2 4 4

    >>> df['max_speed'].to_xarray()
    <xarray.DataArray 'max_speed' (index: 4)>
    array([389. ,  24. ,  80.5,   nan])
    Coordinates:
      * index    (index) int64 0 1 2 3

    >>> dates = pd.to_datetime(['2018-01-01', '2018-01-01',
    ...                         '2018-01-02', '2018-01-02'])
    >>> df_multiindex = pd.DataFrame({'date': dates,
    ...                    'animal': ['falcon', 'parrot', 'falcon',
    ...                               'parrot'],
    ...                    'speed': [350, 18, 361, 15]}).set_index(['date',
    ...                                                    'animal'])
    >>> df_multiindex
                       speed
    date       animal
    2018-01-01 falcon    350
               parrot     18
    2018-01-02 falcon    361
               parrot     15

    >>> df_multiindex.to_xarray()
    <xarray.Dataset>
    Dimensions:  (animal: 2, date: 2)
    Coordinates:
      * date     (date) datetime64[ns] 2018-01-01 2018-01-02
      * animal   (animal) object 'falcon' 'parrot'
    Data variables:
        speed    (date, animal) int64 350 18 361 15

 

 

import xarray as xr
a = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
b = pd.DataFrame({'a':[11,12,13],'b':[14,15,16],'c':[17,18,19]})
ds = xr.Dataset({1:a, 2:b})
def f(thing):
    #print(thing)
    return thing.mean()
>>> q = ds.apply(f)
>>> q
<xarray.Dataset>
Dimensions:  ()
Data variables:
    1        float64 5.0
    2        float64 15.0
>>> q[1]
<xarray.DataArray 1 ()>
array(5.)
>>> q[1].values
array(5.)

 

 

posted @ 2019-03-15 22:01  zhg1016  阅读(15726)  评论(0编辑  收藏  举报