Python3Pandas的DataFrame数据的增、删、改、查
Python3 Pandas的DataFrame数据的增、删、改、查
⼀、DataFrame数据准备
增、删、改、查的⽅法有很多很多种,这⾥只展⽰出常⽤的⼏种。
参数inplace默认为False,只能在⽣成的新数据块中实现编辑效果。当inplace=True时执⾏内部编辑,不返回任何值,原数据发⽣改变。
import numpy as np
import pandas as pd
#测试数据。
df = pd.DataFrame(data = [['lisa','f',22],['joy','f',22],['tom','m','21']],index = [1,2,3],columns = ['name','sex','age'])
数据:
name sex age
1  lisa  f  22
2  joy  f  22
3  tom  m  21
⼆、增删改查操作
1,增
(1).按列增加
citys = ['ny','zz','xy']
df.insert(0,'city',citys) #在第0列,加上column名称为city,值为citys的数值。
jobs = ['student','AI','teacher']
df['job'] = jobs #默认在df最后⼀列加上column名称为job,值为jobs的数据。
df.loc[:,'salary'] = ['1k','2k','2k','2k','3k'] #在df最后⼀列加上column名称为salary,值为等号右边数据。
(2)按⾏增加
#若df中没有index为“4”的这⼀⾏的话,该⾏代码作⽤是往df中加⼀⾏index为“4”,值为等号右边值的数据。若df中已经有index为“4”的这⼀⾏,则该⾏代码作⽤是把df中index为“4”的这⼀⾏修改为等号右边数据。
df.loc[4] = ['zz','mason','m',24,'engineer’]
df_insert = pd.DataFrame({'name':['mason','mario'],'sex':['m','f'],'age':[21,22]},index = [4,5])
#返回添加后的值,并不会修改df的值。ignore_index默认为False,意思是不忽略index值,即⽣成的新的ndf的index采⽤df_insert中的index值。若为True,则新的ndf的index值不使⽤df_insert中的index值,⽽是⾃⼰默认⽣成。ndf = df.append(df_insert,ignore_index = True)
2,查
(1)⽅法⼀:df['column_name'] 和df[row_start_index, row_end_index]
df['name']
df['gender']
df[['name','gender']] #选取多列,多列名字要放在list⾥
df[0:]    #第0⾏及之后的⾏,相当于df的全部数据,注意冒号是必须的
df[:2]    #第2⾏之前的数据(不含第2⾏)
df[0:1]  #第0⾏
df[1:3]  #第1⾏到第2⾏(不含第3⾏)
df[-1:]  #最后⼀⾏
df[-3:-1] #倒数第3⾏到倒数第1⾏(不包含最后1⾏即倒数第1⾏,这⾥有点烦躁,因为从前数时从第0⾏开始,从后数就是-1⾏开始,毕竟没有-0)
(2)⽅法⼀:df.loc[index,column]
# df.loc[index, column_name],选取指定⾏和列的数据
df.loc[0,'name'] # 'Snow'
df.loc[0:2, ['name','age']]          #选取第0⾏到第2⾏,name列和age列的数据, 注意这⾥的⾏选取是包含下标的。
df.loc[[2,3],['name','age']]          #选取指定的第2⾏和第3⾏,name和age列的数据
df.loc[df['gender']=='M','name']      #选取gender列是M,name列的数据
df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
(3)⽅法三:iloc[row_index, column_index]
df.iloc[0,0]        #第0⾏第0列的数据,'Snow'
python3 numpy教程df.iloc[1,2]        #第1⾏第2列的数据,32
df.iloc[[1,3],0:2]  #第1⾏和第3⾏,从第0列到第2列(不包含第2列)的数据
df.iloc[1:3,[1,2]    #第1⾏到第3⾏(不包含第3⾏),第1列和第2列的数据
3,改
(1)改⾏列标题
df.index = list('abc')#把index改为a,b,c.直接修改了df。
(2)改数值
<1>使⽤loc
df.loc[1,'name'] = 'aa'            #修改index为‘1’,column为‘name’的那⼀个值为aa。
df.loc[1] = ['bb','ff',11]          #修改index为‘1’的那⼀⾏的所有值。
df.loc[1,['name','age']] = ['bb',11] #修改index为‘1’,column为‘name’的那⼀个值为bb,age列的值为11。
<2>使⽤iloc[row_index, column_index]
df.iloc[1,2] = 19              #修改某⼀⽆素
df.iloc[:,2] = [11,22,33]      #修改⼀整列
df.iloc[0,:] = ['lily','F',15] #修改⼀整⾏
4,删
(1)删除⾏
df.drop([1,3],axis = 0,inplace = False)#删除index值为1和3的两⾏,
(2)删除列
df.drop(['name'],axis = 1,inplace = False)  #删除name列。
del df['name']      #删除name列。
ndf = df.pop('age')  #删除age列,操作后,df都丢掉了age列,age列返回给了ndf。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。