pandas DataFrame 索引使用总结

Pandas DataFrame 中的索引的使用总结如下:

  • 使用Jupyter notebook
import numpy as np
import pandas as pd
ind2=pd.MultiIndex.from_tuples([('L','A'),('L','B'),('R','C'),('R','D'),('R','E')])
c=pd.DataFrame([[23,35,18,np.nan,np.nan],[17,19,np.nan,6,2]],index=[2,3],columns=ind2)
c
LR
ABCDE
2233518.0NaNNaN
31719NaN6.02.0
c['L'],c['L','A'],c['L']['A']#多级索引的访问,低级需通过高级,c['A']报错。
(    A   B
 2  23  35
 3  17  19,
 2    23
 3    17
 Name: (L, A), dtype: int64,
 2    23
 3    17
 Name: A, dtype: int64)
c.loc[2]# 当有数字索引时,应使用loc,iloc来指明是显示还是隐式。不然会分不清。
L  A    23.0
   B    35.0
R  C    18.0
   D     NaN
   E     NaN
Name: 2, dtype: float64
c.loc[2:3]# 注意:loc当使用显式索引切片时,结果包含最后一个索引;而当使用隐式索引切片时,结果不包含最后一个索引(内置方式)。
LR
ABCDE
2233518.0NaNNaN
31719NaN6.02.0
c.loc[2]['L','A'],c.loc[2]['L']['A'],c.loc[2,('L','A')]
#多级索引可以写在一起,也可以分开写,多级索引写为元组(即index tuple)易读。c.loc[2,'L','A']报错
(23.0, 23.0, 23.0)
c[c>15].fillna(0)#boolean array方式。
LR
ABCDE
2233518.00.00.0
317190.00.00.0
c.sort_index()#按照字典序排序之后才能使用字符的切片操作。
LR
ABCDE
2233518.0NaNNaN
31719NaN6.02.0
c.loc[2]['R']['C':'D'],#c.loc[2]['R','C':'D']报错,
#切片操作必须是同一类型的,不能同时出现int64的Index和str的Index对象。如:c.loc[2:3]['L':'R']报错。
(C    18.0
 D     NaN
 Name: 2, dtype: float64,)
c.loc[[2,3],'R']#fancy indexing 要使用[[]]
CDE
218.0NaNNaN
3NaN6.02.0
c.loc[:][[('L','A')]],c.loc[:]['L','A']# 使用[[]]返回Dataframe。c.loc['L','A']报错,访问columns要写上index
(    L
     A
 2  23
 3  17,
 2    23
 3    17
 Name: (L, A), dtype: int64)
c
LR
ABCDE
2233518.0NaNNaN
31719NaN6.02.0
c.xs('L',axis=1)# c.xs('L')报错
AB
22335
31719
c.xs('A',axis=1,level=1,)# 指明索引的等级level和索引的轴axis即可访问。注意,将去掉索引"A"!!!
#c.xs没有访问特定行特定列。
L
223
317

如果要获取特定行特定列,可能需要用到split将其分开。DataFrame.loc()似乎是不行的。????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值