1. Series的索引操作
# 导包
import numpy as np
import pandas as pd
data = np.random.randint(0,100,size=6)
index = [
["1班","1班","1班","2班","2班","2班"],
["张三","李四","王五","鲁班","张三丰","张无忌"]
]
s = pd.Series(data=data,index=index)
s
1班 张三 68
李四 12
王五 91
2班 鲁班 85
张三丰 52
张无忌 79
dtype: int32
# 显式索引
s["1班"]
张三 68
李四 12
王五 91
dtype: int32
s.loc["1班"]
张三 68
李四 12
王五 91
dtype: int32
s[["1班"]]
1班 张三 68
李四 12
王五 91
dtype: int32
s[["1班","2班"]]
1班 张三 68
李四 12
王五 91
2班 鲁班 85
张三丰 52
张无忌 79
dtype: int32
s["1班"]["张三"]
68
s["1班"]["张三"]
68
s["1班","张三"]
68
s.loc["1班"]["张三"]
68
s.loc["1班","张三"]
68
# 隐式索引
s[0]
68
s.iloc[0]
68
s.iloc[[0,1]]
1班 张三 68
李四 12
dtype: int32
2. Series的切片操作
# 显式切片 s["1班":"2班"]
1班 张三 68
李四 12
王五 91
2班 鲁班 85
张三丰 52
张无忌 79
dtype: int32
s.loc["1班":"2班"]
1班 张三 68
李四 12
王五 91
2班 鲁班 85
张三丰 52
张无忌 79
dtype: int32
s.loc["1班"]["张三":"李四"]
张三 68
李四 12
dtype: int32
# 建议使用隐式索引 s[1:5]
1班 李四 12
王五 91
2班 鲁班 85
张三丰 52
dtype: int32
s.iloc[1:5]
1班 李四 12
王五 91
2班 鲁班 85
张三丰 52
dtype: int32
3. DataFrame的索引操作
# 导包
import numpy as np
import pandas as pd
data = np.random.randint(0,100,size=(6,6))
# 行索引
index = pd.MultiIndex.from_arrays([
["1班","1班","1班","2班","2班","2班"],
["张三","李四","王五","鲁班","张三丰","张无忌"]
])
# 列索引
columns = pd.MultiIndex.from_arrays([
["期中","期中","期中","期末","期末","期末"],
["语文","数学","英语","语文","数学","英语"]
])
df = pd.DataFrame(data=data,index=index,columns=columns)
df
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 | 61 | 87 | 32 |
---|
李四 | 19 | 51 | 23 | 25 | 12 | 34 |
---|
王五 | 28 | 8 | 49 | 92 | 9 | 80 |
---|
2班 | 鲁班 | 56 | 7 | 64 | 1 | 83 | 13 |
---|
张三丰 | 46 | 72 | 97 | 81 | 88 | 70 |
---|
张无忌 | 34 | 73 | 35 | 24 | 2 | 3 |
---|
# 获取元素
df["期中"]["数学"]["1班"]["张三"]
42
df.iloc[0,1]
42
df.loc[("1班","张三"),("期中","数学")]
42
# 列索引
df["期中"]
| | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 |
---|
李四 | 19 | 51 | 23 |
---|
王五 | 28 | 8 | 49 |
---|
2班 | 鲁班 | 56 | 7 | 64 |
---|
张三丰 | 46 | 72 | 97 |
---|
张无忌 | 34 | 73 | 35 |
---|
df["期中"][["数学"]]
| | 数学 |
---|
1班 | 张三 | 42 |
---|
李四 | 51 |
---|
王五 | 8 |
---|
2班 | 鲁班 | 7 |
---|
张三丰 | 72 |
---|
张无忌 | 73 |
---|
df["期中"]["数学"]
1班 张三 42
李四 51
王五 8
2班 鲁班 7
张三丰 72
张无忌 73
Name: 数学, dtype: int32
df["期中","数学"]
1班 张三 42
李四 51
王五 8
2班 鲁班 7
张三丰 72
张无忌 73
Name: (期中, 数学), dtype: int32
df.期中.数学
1班 张三 42
李四 51
王五 8
2班 鲁班 7
张三丰 72
张无忌 73
Name: 数学, dtype: int32
df.iloc[:,1]
1班 张三 42
李四 51
王五 8
2班 鲁班 7
张三丰 72
张无忌 73
Name: (期中, 数学), dtype: int32
df.iloc[:,[0,1,2]]
| | 期中 |
---|
| | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 |
---|
李四 | 19 | 51 | 23 |
---|
王五 | 28 | 8 | 49 |
---|
2班 | 鲁班 | 56 | 7 | 64 |
---|
张三丰 | 46 | 72 | 97 |
---|
张无忌 | 34 | 73 | 35 |
---|
df.loc[:,"期中"]
| | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 |
---|
李四 | 19 | 51 | 23 |
---|
王五 | 28 | 8 | 49 |
---|
2班 | 鲁班 | 56 | 7 | 64 |
---|
张三丰 | 46 | 72 | 97 |
---|
张无忌 | 34 | 73 | 35 |
---|
df.loc[:,("期中","数学")]
1班 张三 42
李四 51
王五 8
2班 鲁班 7
张三丰 72
张无忌 73
Name: (期中, 数学), dtype: int32
# 行索引
df.loc["1班"]
| 期中 | 期末 |
---|
| 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
张三 | 27 | 42 | 41 | 61 | 87 | 32 |
---|
李四 | 19 | 51 | 23 | 25 | 12 | 34 |
---|
王五 | 28 | 8 | 49 | 92 | 9 | 80 |
---|
df.loc["1班"].loc["张三"]
期中 语文 27
数学 42
英语 41
期末 语文 61
数学 87
英语 32
Name: 张三, dtype: int32
df.loc["1班","张三"]
期中 语文 27
数学 42
英语 41
期末 语文 61
数学 87
英语 32
Name: (1班, 张三), dtype: int32
df.loc[("1班","张三")]
期中 语文 27
数学 42
英语 41
期末 语文 61
数学 87
英语 32
Name: (1班, 张三), dtype: int32
# 隐式索引
df.iloc[0]
期中 语文 27
数学 42
英语 41
期末 语文 61
数学 87
英语 32
Name: (1班, 张三), dtype: int32
df.iloc[[0]]
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 | 61 | 87 | 32 |
---|
df.iloc[[0,1,4,2]]
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 27 | 42 | 41 | 61 | 87 | 32 |
---|
李四 | 19 | 51 | 23 | 25 | 12 | 34 |
---|
2班 | 张三丰 | 46 | 72 | 97 | 81 | 88 | 70 |
---|
1班 | 王五 | 28 | 8 | 49 | 92 | 9 | 80 |
---|
4. DataFrame的切片操作
# 导包
import numpy as np
import pandas as pd
data = np.random.randint(0,100,size=(6,6))
# 行索引
index = pd.MultiIndex.from_arrays([
["1班","1班","1班","2班","2班","2班"],
["张三","李四","王五","鲁班","张三丰","张无忌"]
])
# 列索引
columns = pd.MultiIndex.from_arrays([
["期中","期中","期中","期末","期末","期末"],
["语文","数学","英语","语文","数学","英语"]
])
df = pd.DataFrame(data=data,index=index,columns=columns)
df
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 73 | 26 | 94 | 91 | 59 | 33 |
---|
李四 | 1 | 2 | 20 | 86 | 10 | 76 |
---|
王五 | 2 | 81 | 15 | 50 | 59 | 36 |
---|
2班 | 鲁班 | 96 | 35 | 32 | 20 | 79 | 78 |
---|
张三丰 | 96 | 37 | 94 | 57 | 79 | 74 |
---|
张无忌 | 69 | 92 | 9 | 65 | 28 | 67 |
---|
# 行切片
df.iloc[1:5]
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 李四 | 1 | 2 | 20 | 86 | 10 | 76 |
---|
王五 | 2 | 81 | 15 | 50 | 59 | 36 |
---|
2班 | 鲁班 | 96 | 35 | 32 | 20 | 79 | 78 |
---|
张三丰 | 96 | 37 | 94 | 57 | 79 | 74 |
---|
df.loc["1班":"2班"]
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 73 | 26 | 94 | 91 | 59 | 33 |
---|
李四 | 1 | 2 | 20 | 86 | 10 | 76 |
---|
王五 | 2 | 81 | 15 | 50 | 59 | 36 |
---|
2班 | 鲁班 | 96 | 35 | 32 | 20 | 79 | 78 |
---|
张三丰 | 96 | 37 | 94 | 57 | 79 | 74 |
---|
张无忌 | 69 | 92 | 9 | 65 | 28 | 67 |
---|
df.loc[[("1班","张三")]]
| | 期中 | 期末 |
---|
| | 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
1班 | 张三 | 73 | 26 | 94 | 91 | 59 | 33 |
---|
# 列切片
df.iloc[:,1:5]
| | 期中 | 期末 |
---|
| | 数学 | 英语 | 语文 | 数学 |
---|
1班 | 张三 | 26 | 94 | 91 | 59 |
---|
李四 | 2 | 20 | 86 | 10 |
---|
王五 | 81 | 15 | 50 | 59 |
---|
2班 | 鲁班 | 35 | 32 | 20 | 79 |
---|
张三丰 | 37 | 94 | 57 | 79 |
---|
张无忌 | 92 | 9 | 65 | 28 |
---|
df.loc["1班","期中":"期末"]
| 期中 | 期末 |
---|
| 语文 | 数学 | 英语 | 语文 | 数学 | 英语 |
---|
张三 | 73 | 26 | 94 | 91 | 59 | 33 |
---|
李四 | 1 | 2 | 20 | 86 | 10 | 76 |
---|
王五 | 2 | 81 | 15 | 50 | 59 | 36 |
---|
# 建议切片使用隐式索引(使用数字下标)
df.iloc[1:5,1:5]
| | 期中 | 期末 |
---|
| | 数学 | 英语 | 语文 | 数学 |
---|
1班 | 李四 | 2 | 20 | 86 | 10 |
---|
王五 | 81 | 15 | 50 | 59 |
---|
2班 | 鲁班 | 35 | 32 | 20 | 79 |
---|
张三丰 | 37 | 94 | 57 | 79 |
---|