DataFrame
多层索引对象的索引与切片操作
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
index = pd.MultiIndex.from_product([['期中','期末'],["张三","李四"]])
columns = ["python","java","c"]
data = np.random.randint(0,100,size=(4,3))
df = DataFrame(data=data,index=index,columns=columns)
df
| | python | java | c |
---|
其中 | 张三 | 33 | 46 | 10 |
---|
李四 | 63 | 99 | 87 |
---|
期末 | 张三 | 93 | 45 | 31 |
---|
李四 | 54 | 58 | 65 |
---|
获取索引为 python
col_python = df["python"]
col_python
期中 张三 50李四 91
期末 张三 43李四 12
Name: python, dtype: int64
多层级索引使用元祖来表达索引逻辑
col_python.loc[("期中","李四")]
91
可以把多级索引变成单极索引
col_python.loc["期中"]
张三 50
李四 91
Name: python, dtype: int64
切片
# col_python.loc["index1":"index2"]
col_python.loc[("期中","张三"):("期末","张三")]
期中 张三 50李四 91
期末 张三 43
Name: python, dtype: int64
切片
1) Series的操作
【重要】对于Series来说,直接中括号[]与使用 .loc() 完全一样,推荐使用 .loc[] 索引与接片
(1) 索引
df
| | python | java | c |
---|
期中 | 张三 | 50 | 48 | 62 |
---|
李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 43 | 72 | 99 |
---|
李四 | 12 | 60 | 44 |
---|
修改期末张三python==100
index = ("期末","张三")
columns = "python"
df.loc[index,columns] = 100
df
| | python | java | c |
---|
期中 | 张三 | 50 | 48 | 62 |
---|
李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 100 | 72 | 99 |
---|
李四 | 12 | 60 | 44 |
---|
获取 python 和 java
df[["python","java"]]
| | python | java |
---|
期中 | 张三 | 50 | 48 |
---|
李四 | 91 | 95 |
---|
期末 | 张三 | 100 | 72 |
---|
李四 | 12 | 60 |
---|
df.loc[:,["python","java"]]
| | python | java |
---|
期中 | 张三 | 50 | 48 |
---|
李四 | 91 | 95 |
---|
期末 | 张三 | 100 | 72 |
---|
李四 | 12 | 60 |
---|
获取期中的张三李四
df.loc["期中"]
| python | java | c |
---|
张三 | 50 | 48 | 62 |
---|
李四 | 91 | 95 | 98 |
---|
df
| | python | java | c |
---|
期中 | 张三 | 50 | 48 | 62 |
---|
李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 100 | 72 | 99 |
---|
李四 | 12 | 60 | 44 |
---|
获取期中的李四和期末的张三
index1 = ("期中","李四")
index2 = ("期末","张三")
df.loc[[index1,index2]]
| | python | java | c |
---|
期中 | 李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 100 | 72 | 99 |
---|
切片获取
df.loc[index1:index2]
| | python | java | c |
---|
期中 | 李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 100 | 72 | 99 |
---|
隐式索引
df
| | python | java | c |
---|
期中 | 张三 | 50 | 48 | 62 |
---|
李四 | 91 | 95 | 98 |
---|
期末 | 张三 | 100 | 72 | 99 |
---|
李四 | 12 | 60 | 44 |
---|
df.iloc[0]
python 50
java 48
c 62
Name: (期中, 张三), dtype: int64
df.iloc[[0,3]]
| | python | java | c |
---|
期中 | 张三 | 50 | 48 | 62 |
---|
期末 | 李四 | 12 | 60 | 44 |
---|
本文标签:
DataFrame
发表评论