Pandas学习笔记02 索引操作


前言

导包

import pandas as pd
import numpy as np

1.0 dataframe 数据

创建一个字典

new_dict = {
    'A':1,
    'B':[1,2,3,4],
    'C':'asd123',
    'D':np.arange(4),
    'E':pd.Series(1,index=range(4))
}

把索引修改为abcd

df1 = pd.DataFrame(new_dict,index=list('abcd'))

输出df1

df1

在这里插入图片描述


单独查看列B

df1['B']

a 1
b 2
c 3
d 4
Name: B, dtype: int64


当然我们也可以查看a列df1[‘a’]
df 数据可以通过列索引取值(1)df1’列名’df1.列名 取出的数据是series对象

df1.B.values

array([1, 2, 3, 4], dtype=int64)

查看B列c行

df1.B.c 

3


2.0 series对象取值

建立一个series对象
ser1 =

pd.Series(range(10,15),index=list('ABCDE'))
ser1

A 10
B 11
C 12
D 13
E 14
dtype: int64

ser2 = pd.Series(range(10,15),index=range(1,6))
ser2

1 10
2 11
3 12
4 13
5 14
dtype: int64


2.1 通过行索引取值

ser1['A']

10

ser1.A 

10


# ser2['2']
# ser2.2
ser2[1]
ser2[2]

11


总结:series的行索引,如果不是数字,存在索引和下标的区别
如果是数字,不存在下标的概念,默认就是索引

2.2 切片

print(ser1)
print('-'*50)
print(ser2)

在这里插入图片描述

如果是索引,切片则包含结束位置

ser1['A':'C']

A 10
B 11
C 12
dtype: int64

如果是下标取值,则符合左闭右开格式,不包含结束位置

ser1[0:3]

A 10
B 11
C 12
dtype: int64


单独提取A和C的索引
ser1[['A','C']]

或者

ser1[[0,2]]

A 10
C 12
dtype: int64


筛选出大于13的行索引

ser1[ser1>13]

E 14
dtype: int64

筛选出大于10且为偶数的行索引

ser1[(ser1>10)&(ser1%2==0)]

C 12
E 14
dtype: int64


我们把上文创建的dataframe数据使用一下

df1

在这里插入图片描述
单独输出A列索引

df1.A

a 1
b 1
c 1
d 1
Name: A, dtype: int64

返回视图对象

df1.A.values

array([1, 1, 1, 1], dtype=int64)


取单个对象(如C行c列)

df1['C']['c']

‘asd123’

取不连续多列

df1[['A','C','E']]

在这里插入图片描述


取不连续多列

df1[['A','C','E']]

在这里插入图片描述
我们尝试下取连续多列

df1['A':'C']

在这里插入图片描述
由此得出默认不支持取连续多列
我们来尝试取一行数据

df1['a':'a']

在这里插入图片描述
那我们取连续多行

df1['a':'c']

在这里插入图片描述
由此得出默认不支持取不连续多行

2.3 高级索引

2.3.1 标签索引

先把df1和series对象拿下来进行尝试

df1

在这里插入图片描述

ser1

A 10
B 11
C 12
D 13
E 14
dtype: int64


进行切片

ser1.loc['A':'C']

A 10
B 11
C 12
dtype: int64

ser1.loc[['A','C','D']]

A 10
C 12
D 13
dtype: int64


我们将df1取单行

df1.loc['a']

A 1
B 1
C asd123
D 0
E NaN
Name: a, dtype: object

取单列(先行后列)

df1.loc[:,'A']

a 1
b 1
c 1
d 1
Name: A, dtype: int64


定向索引

df1.loc['d','D']

3

a到c的行索引和列索引

df1.loc['a':'c',:]

a.c.d的行索引
在这里插入图片描述


尝试一下列索引

df1.loc[:,['A','C','D']]

在这里插入图片描述

取B列大于2的

df1.loc[df1['B']>2]

在这里插入图片描述
总结:loc标签索引符合总结规律[行索引,列索引]

2.3.2 位置索引

我们还是把dataframe拿下来使用

df1

在这里插入图片描述


行索引

df1.iloc[0:2]

在这里插入图片描述
列索引

df1.iloc[:,0:3]

在这里插入图片描述

3.0 删除drop

我们把series拿下来使用

ser1

A 10
B 11
C 12
D 13
E 14
dtype: int64


把E给删了

ser1.drop('E')

A 10
B 11
C 12
D 13
dtype: int64

我们尝试看下对原series对象有没有影响

ser1

A 10
B 11
C 12
D 13
E 14
dtype: int64


implace 如果设置为true,那么删除并且替换原始数据,如果默认,则返回一个删除之后的新数据,不影响原始内容

我们来批量删除一下

ser1.drop(['B','C','D'])

A 10
E 14
dtype: int64

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值