4.2 Pandas数据结构的增删改查操作

本文详细介绍了Pandas中Series和DataFrame对象的查询、修改、增加和删除操作,包括loc和iloc方法、[]操作符、布尔索引等。还展示了如何通过函数修改索引、增加新行和列、删除数据等。
摘要由CSDN通过智能技术生成

4.2 Series和DataFrame对象的查、改、增、 删

In [1]:

import numpy as np
import pandas as pd

对series和dataframe的常用操作是查询数据(索引数据)、修改、增加和删除数据,下面就分别介绍这些操作:

4.2.1. Series的查、改、增、 删

4.2.1.1 查

In [2]:

mylist = list('abcdef')   # 列表作为索引
myarr = np.random.randint(12,size=6)
s = pd.Series(data=myarr,index=mylist)
s 

Out[2]:

a     0
b     2
c    11
d    11
e     1
f     9
dtype: int32
查的方法:loc方法、iloc方法、[]操作符

最常用的索引方法可能就是这三类,其中iloc表示位置(下标)索引,loc表示标签索引,[]则两者都可以,既可以用下标索引也可以用标签索引。

  • [],快捷查看

索引下标为标量, 返回一个值

In [3]:

s[2]

Out[3]:

11

下标的切片是左闭右开,最后一个索引不包括其中,类似于numpy数组切片,结果仍然是series。

In [4]:

s[2:5]

Out[4]:

c    11
d    11
e     1
dtype: int32

标签索引,单个标签索引返回该标签对应的数据。

In [5]:

s['e']

Out[5]:

1

标签的切片操作是左闭右闭,即包含最后一个索引,结果仍然是series。

In [6]:

s['c':'e']

Out[6]:

c    11
d    11
e     1
dtype: int32

整型数组索引:

In [7]:

s[[0,2]]

Out[7]:

a     0
c    11
dtype: int32

布尔索引:

In [8]:

s1 = s[2:5]
s1

Out[8]:

c    11
d    11
e     1
dtype: int32

In [9]:

mask = [False,True,True]
s1[mask]

Out[9]:

d    11
e     1
dtype: int32
  • loc方法: .loc[],基于标签索引

.loc[]通过索引的标签查询对应的值

In [10]:

s.loc['d'] # 单索引,返回一个值

Out[10]:

11

loc的切片操作是左闭右闭,也就是包含了结束标签的取值,返回Series切片。

In [11]:

s.loc['a':'d']

Out[11]:

a     0
b     2
c    11
d    11
dtype: int32

上面结果返回了d索引值,同s['a':'d']

In [12]:

s.loc[['d','f']] # 整型数组索引,返回Series

Out[12]:

d    11
f     9
dtype: int32

布尔索引:

In [13]:

s2 = s.loc['a':'d'] 
s2

Out[13]:

a     0
b     2
c    11
d    11
dtype: int32

In [14]:

mask = [False, True, False,True] # 布尔索引,返回Series类型
s2.loc[mask] 

Out[14]:

b     2
d    11
dtype: int32
  • iloc方法:.iloc[],基于位置即下标的索引

In [15]:

s.iloc[3] # 单个元素的下标索引,返回下标对应的值

Out[15]:

11

范围,左闭右开,返回Series切片,同s[2:5]

In [16]:

s.iloc[2:5]

Out[16]:

c    11
d    11
e     1
dtype: int32

In [17]:

s.iloc[[2,5]] #列表索引即整型数组索引,返回Series类型

Out[17]:

c    11
f     9
dtype: int32

In [18]:

s3 = s.iloc[2:5]
s3

Out[18]:

c    11
d    11
e     1
dtype: int32

In [19]:

mask = [False,True,False]  #布尔数组索引,返回Series类型
s3.iloc[mask]

Out[19]:

d    11
dtype: int32
4.2.1.2 改
  • 改值 直接在索引操作的基础上赋值即可

In [20]:

s[2] = 333
s

Out[20]:

a      0
b      2
c    333
d     11
e      1
f      9
dtype: int32

In [21]:

s['f'] = 555
s

Out[21]:

a      0
b      2
c    333
d     11
e      1
f    555
dtype: int32

In [22]:

s.loc['c':'e'] = [100,400,500]
s

Out[22]:

a      0
b      2
c    100
d    400
e    500
f    555
dtype: int32
  • 改索引

直接在index上改,index类似于tuple,只能引用到别处,不能切片修改

In [23]:

s4 = s[2:5]
s4

Out[23]:

c    100
d    400
e    500
dtype: int32

In [24]:

s4.index = ['aa','ee','ff']
s4

Out[24]:

aa    100
ee    400
ff    500
dtype: int32
通过函数修改索引:Series.rename(index=None, level = None, inplace = False)
  • index:list or dict,list类型时必须和已有索引长度相同,dict类型可以部分修改;
  • level:多重索引时,可以指定修改哪一重,从0开始递增;
  • inplace:是否修改原Series,默认为False,即不修改。

In [25]:

s5 = s[2:5]
s5

Out[25]:

c    100
d    400
e    500
dtype: int32

In [26]:

s5.rename(index = {'e':'bb','a':'zz'}, inplace = True)

In [27]:

s5

Out[27]:

c     100
d     400
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenos121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值