繁体   English   中英

按轴号访问熊猫轴

[英]access pandas axes by axis number

考虑pd.Panel pnpd.DataFrame df

import pandas as pd
import numpy as np

pn = pd.Panel(np.arange(27).reshape(3, 3, 3), list('XYZ'), list('abc'), list('ABC'))

pn.to_frame().rename_axis('item', 1).unstack()

在此处输入图片说明

df = pd.DataFrame(np.arange(9).reshape(3, 3), list('abc'), list('ABC'))

df

在此处输入图片说明


我可以访问items的轴pnpn.itemscolumnsdfdf.columns


但是如何获得编号为0pnitems轴和编号为2 minor_axis轴? 使用接受参数axis=0许多方法,我想象有一种直接的方法可以通过数字访问轴。

我所做的
自定义功能

def get_axis(obj, axis=0):
    if isinstance(obj, pd.Panel):
        m = pd.Series(['items', 'major_axis', 'minor_axis'])
    else:
        m = pd.Series(['index', 'columns'])
    return obj.__getattribute__(m.loc[axis])

print(get_axis(pn, 2))
print(get_axis(pn, 1))
print(get_axis(pn, 0))
print(get_axis(df, 1))
print(get_axis(df, 0))

Index([u'A', u'B', u'C'], dtype='object')
Index([u'a', u'b', u'c'], dtype='object')
Index([u'X', u'Y', u'Z'], dtype='object')
Index([u'A', u'B', u'C'], dtype='object')
Index([u'a', u'b', u'c'], dtype='object')

使用.axes返回索引轴标签和列轴标签的列表,然后您可以通过切片符号访问它。

pn.axes
#[Index(['X', 'Y', 'Z'], dtype='object'),
# Index(['a', 'b', 'c'], dtype='object'),
# Index(['A', 'B', 'C'], dtype='object')]

然后,您可以提供切片来检索对象:

pn.axes[0]
#Index(['X', 'Y', 'Z'], dtype='object')

df.axes[0]
#Index(['a', 'b', 'c'], dtype='object')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM