pandas中建立多級索引的方法

2021-08-30 13:51:06 字數 2188 閱讀 8976

(1)方法一:使用pandas.multiindex.from_arrays()

in [25]: pd.multiindex.from_arrays([['a', 'a', 'b', 'b'],[1, 2, 1, 2]])

out[25]:

multiindex(levels=[['a', 'b'], [1, 2]],

labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

上例中,多級索引的對應關係是:

a  1

2b 1

2

通俗的說就是a1,a2和b1,b2。

(2)方法2:使用pd.multiindex.from_tuples()

in [26]: pd.multiindex.from_tuples([('a', 1),('a', 2),('b', 1),('b', 2)])

out[26]:

multiindex(levels=[['a', 'b'], [1, 2]],

labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

(3)上面兩種方法都很煩,最簡單的方法是使用笛卡爾乘積:pd.multiindex.from_product()

in [27]: pd.multiindex.from_product([['a', 'b'], [1, 2]])

out[27]:

multiindex(levels=[['a', 'b'], [1, 2]],

labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

還可以為建立的索引指定名稱

in [28]: pop

out[28]:

廣東 2017 3387964

2018 658964

廣西 2017 458752

2018 698256

湖南 2017 125874

2018 658963

dtype: int64

in [29]: pop.index.names = [ '省份','年份']

in [30]: pop

out[30]:

省份 年份

廣東 2017 3387964

2018 658964

廣西 2017 458752

2018 698256

湖南 2017 125874

2018 658963

dtype: int64

既然行索引可以有多級的,那麼,自然而然地,列也有多級索引。下面我們建立乙個多行多列的索引。舉例如下:

in [33]: index = pd.multiindex.from_product([['廣東', '廣西'], [2017, 2018]], n

...: ames=['province', 'year'])

in [34]: column = pd.multiindex.from_product([['it行業','製造業'], ['軟體','硬

...: 件']], names=['行業', '崗位'])

我們模擬一組資料:

in [41]: data = np.random.randint(100,2000,size=(4,4))

in [42]: industry_data = pd.dataframe(data, index=index,colum

in [43]: industry_data

out[43]:

行業 it行業 製造業

崗位 軟體 硬體 軟體 硬體

province year

廣東 2017 1632 847 200 1495

2018 176 1179 718 973

廣西 2017 1995 1973 1096 1111

2018 1209 668 1128 1330

pandas中的多級index操作

在pandas中可以為series和dataframe設定多個index,也就是說可以有多級index和column。這樣可以對pandas的操作更加靈活。import numpy as np import pandas as pd from pandas import series,datafra...

pandas建立多重索引的幾種方式

使用pandas建立多重索引的方式有很多,下面舉出常見的幾種 1 pd.multiindex.from tuples方法 import pandas as pd import numpy as np arrays bar bar baz baz foo foo qux qux one two one...

pandas 01 Series 的幾種建立方法

pandas.series 的幾種建立方法。import numpy as np import pandas as pd 使用乙個列表生成乙個series s1 pd.series 1,2,3,4 print s1 0 1 1 2 2 3 3 4 dtype int64 返回所有的索引 print ...