在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...