pandas中的多級index操作

2021-08-30 08:18:26 字數 2885 閱讀 1819

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

import numpy as np

import pandas as pd

from pandas import series, dataframe

np.random.seed(

666)

# series 中的 index

s1 = series(np.random.randn(6)

, index=[[

'1',

'1',

'1',

'2',

'2',

'2'],[

'a',

'b',

'c',

'a',

'b',

'c']])

print

(s1)

'''1 a 0.824188

b 0.479966

c 1.173468

2 a 0.909048

b -0.571721

c -0.109497

dtype: float64

'''print

(s1[

'1']

)# 可以 獲取 index 為 1 的 series

'''a 0.824188

b 0.479966

c 1.173468

dtype: float64

'''print

(s1[

'1']

['a'])

# 0.8241880833175302

print

(s1[:,

'a']

)''' 同樣是乙個 series

1 0.824188

2 0.909048

dtype: float64

'''# 多級的series, 可以轉化為乙個 dataframe

df1 = s1.unstack(

)# 二級series 可以轉化dataframe

print

(df1)

''' a b c

1 0.824188 0.479966 1.173468

2 0.909048 -0.571721 -0.109497

'''df2 = dataframe(

[s1[

'1']

, s1[

'2']])

print

(df2)

''' a b c

0 0.824188 0.479966 1.173468

1 0.909048 -0.571721 -0.109497

'''# dataframe 轉化為 series

s2 = df1.unstack(

)print

(s2)

'''a 1 0.824188

2 0.909048

b 1 0.479966

2 -0.571721

c 1 1.173468

2 -0.109497

dtype: float64

'''s2 = df1.t.unstack(

)print

(s2)

'''1 a 0.824188

b 0.479966

c 1.173468

2 a 0.909048

b -0.571721

c -0.109497

dtype: float64

'''# 建立 乙個 多級的 dataframe

df = dataframe(np.arange(16)

.reshape(4,

4), index=[[

'a',

'a',

'b',

'b'],[

1,2,

1,2]

], \

columns=[[

'beijing'

,'beijing'

,'shanghai'

,'shanghai'],

[8,9

,8,9

]])print

(df)

''' beijing shanghai

8 9 8 9

a 1 0 1 2 3

2 4 5 6 7

b 1 8 9 10 11

2 12 13 14 15

'''# 訪問 多級 dataframe 的元素

print

(df[

'beijing'])

# 返回 也是乙個 dataframe

''' 8 9

a 1 0 1

2 4 5

b 1 8 9

2 12 13

'''print

(df[

'beijing'][

8])# 訪問dataframe和訪問series的方法一樣

'''a 1 0

2 4

b 1 8

2 12

name: 8, dtype: int64

'''

pandas中建立多級索引的方法

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 上例中,多級索引...

pandas系列之index小記

import pandas as pd 資料準備 df pd.dataframe np.arange 20 reshape 5,4 index 1 3,6 9,10 重置索引且保留原始索引 df.reset index 重置索引且不保留原始索引 df.reset index drop true 按照...

和index有關的pandas切片問題

我們使用pandas常常會涉及到切片操作,特別是一維的series,我常常覺得它和python list無甚區別,所以經常就用list的切片方法去切片series。然而結果呢?有時候會成功,有時候就會報惱人的keyerror。次數多了之後,我發現這樣乙個問題 當series或者dataframe的i...