日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas 笔记:multi-index

發布時間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas 笔记:multi-index 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多維度索引

1 前言

比如我們有這么一個DataFrame

data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]])

那么此時有兩列index ,這就是multi-index

mindex = data.index mindex ''' MultiIndex([('a', 1),('a', 2),('a', 3),('d', 1),('d', 2)],) '''

2 屬性

2.1 levels

不同層級上的屬性值

mindex.levels #FrozenList([['a', 'd'], [1, 2, 3]])

2.2 codes

不同層級上索引元素的位置

mindex.codes # FrozenList([[0, 0, 0, 1, 1], [0, 1, 2, 0, 1]])

表示第一個索引('a','d') 0號(也就是'a')對應的是第一個列表元素為0的行(前三行);1號(也就是'd')對應的是第一個列表元素為1的行(后兩行)

第二個索引(1 2 3) 0號(也就是1)對應的是第二個列表元素為0的行(第一行第四行);1號(也就是'2')對應的是第二個列表元素為1的行(第二行第五行);2號(也就是3)對應的是第二個列表元素為2的行(第三行)

2.3 names

索引的名稱(我們這里是沒有)

mindex.names #FrozenList([None, None])

3 構建多層索引

3.1 直接DataFrame 構建

data = pd.DataFrame(np.random.randn(5),index=[['a', 'a', 'a', 'd','d'],[1, 2, 3, 1, 2]]) data'''0 a 1 -0.4793182 -0.4715943 -1.550214 d 1 0.3294462 -0.607804 ''''

3.2 從列表轉化

兩個列表相同索引的元素組成一個index

mindex = pd.MultiIndex.from_arrays([['a-', 'a-', 'a-', 'a-', 'd-'],[-1, -2, -3, -1, -2]])data.reindex(mindex) '''0 a- -1 NaN-2 NaN-3 NaN-1 NaN d- -2 NaN '''

3.3 從元組轉化

mindex = pd.MultiIndex.from_tuples([('a',1), ('a',2), ('b',1)]) data.reindex(mindex) '''0 a 1 -1.407190 2 1.193368 b 1 NaN '''

?每一個元組中的元素組成一個index

3.4 使用兩個列表的笛卡爾乘積轉化

mindex = pd.MultiIndex.from_product([['a','d'], [1,2]]) data.reindex(mindex)'''0 a 1 -1.4071902 1.193368 d 1 -0.3431652 -0.112372 '''

4 轉換多維索引的順序

將第0維和第一維的索引交換

data.swaplevel(0,1) '''0 1 a -1.407190 2 a 1.193368 3 a -0.352287 1 d -0.343165 2 d -0.112372 '''

總結

以上是生活随笔為你收集整理的pandas 笔记:multi-index的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。