2
考慮pd.Panel
pn
和pd.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
軸的pn
與pn.items
和columns
軸的df
與df.columns
。
問題
但我怎麼得到pn
的items
軸與數0
和minor_axis
軸與數2
?用盡可能多的方法來接受參數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')
你知道'.xs'?例如:'pn.xs('A',axis = 1,level = 1)' –
@StevenG是的,我願意。這會返回一個「pn」的截面。我想要'Index'對象是第一個軸。 – piRSquared