pandas mysql索引_pandas练习-多层索引的创建和各种操作(multiindex)第二部分

使用切片(slicers)

你可以使用切片来选择MultiIndex, slice是python内置的函数(其实是一个类), 他的用法是这样的:

1

2

3alist = list('abcdefg' * 3)

selector = slice(1, 6, 2)

alist[selector]

输出(plain):

['b', 'd', 'f']

我们可以使用slice来选择MultiIndex。

下面先创建一个DataFrame:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22import pandas as pd

import numpy as np

def mklbl(prefix,n):

return ["%s%s" % (prefix,i) for i in range(n)]

miindex = pd.MultiIndex.from_product([mklbl('A',4),

mklbl('B',2),

mklbl('C',4),

mklbl('D',2)])

micolumns = pd.MultiIndex.from_tuples([('a','foo'),('a','bar'),

('b','foo'),('b','bah')],

names=['lvl0', 'lvl1'])

dfmi = pd.DataFrame(np.arange(len(miindex)*len(micolumns)).reshape((len(miindex),len(micolumns))),

index=miindex,

columns=micolumns).sort_index().sort_index(axis=1)

dfmi.head()

输出(html):

lvl0

a

b

lvl1

bar

foo

bah

foo

A0

B0

C0

D0

1

0

3

2

D1

5

4

7

6

C1

D0

9

8

11

10

D1

13

12

15

14

C2

D0

17

16

19

18

下面我们需要选择出MultiIndex第一层为A1或A2或A3, 第二层不做选择, 第三层只包括C1和C3的行:

1dfmi.loc[(slice('A1', 'A3'), slice(None), ['C1', 'C3']), :]

输出(html):

lvl0

a

b

lvl1

bar

foo

bah

foo

A1

B0

C1

D0

73

72

75

74

D1

77

76

79

78

C3

D0

89

88

91

90

D1

93

92

95

94

B1

C1

D0

105

104

107

106

D1

109

108

111

110

C3

D0

121

120

123

122

D1

125

124

127

126

A2

B0

C1

D0

137

136

139

138

D1

141

140

143

142

C3

D0

153

152

155

154

D1

157

156

159

158

B1

C1

D0

169

168

171

170

D1

173

172

175

174

C3

D0

185

184

187

186

D1

189

188

191

190

A3

B0

C1

D0

201

200

203

202

D1

205

204

207

206

C3

D0

217

216

219

218

D1

221

220

223

222

B

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值