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
pythonjavac
其中张三334610
李四639987
期末张三934531
李四545865
获取索引为 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
pythonjavac
期中张三504862
李四919598
期末张三437299
李四126044
修改期末张三python==100
index = ("期末","张三")
columns = "python"
df.loc[index,columns]  = 100
df
pythonjavac
期中张三504862
李四919598
期末张三1007299
李四126044
获取 python 和 java
df[["python","java"]]
pythonjava
期中张三5048
李四9195
期末张三10072
李四1260
df.loc[:,["python","java"]]
pythonjava
期中张三5048
李四9195
期末张三10072
李四1260
获取期中的张三李四
df.loc["期中"]
pythonjavac
张三504862
李四919598
df
pythonjavac
期中张三504862
李四919598
期末张三1007299
李四126044
获取期中的李四和期末的张三
index1 = ("期中","李四")
index2 = ("期末","张三")
df.loc[[index1,index2]]
pythonjavac
期中李四919598
期末张三1007299
切片获取
df.loc[index1:index2]
pythonjavac
期中李四919598
期末张三1007299

隐式索引

df
pythonjavac
期中张三504862
李四919598
期末张三1007299
李四126044
df.iloc[0]
python    50
java      48
c         62
Name: (期中, 张三), dtype: int64
df.iloc[[0,3]]
pythonjavac
期中张三504862
期末李四126044

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值