欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Pandas索引操作

时间:2023-05-24
Series对象 (一) 增

import numpy as npimport pandas as pdseries_1 = pd.Series(range(5),index=['a','b','c','d','e'])print(series_1)#a 0#b 1#c 2#d 3#e 4#dtype: int64

1、改变初始数据

不可使用索引位置(索引超出界限)

series_1['f'] = 999print(series_1)#a 0#b 1#c 2#d 3#e 4#f 999#dtype: int64

2、生成新的Series对象

res = series_1.append(pd.Series({'g':888}))print(res,type(res),res is series_1,sep='n')#a 0#b 1#c 2#d 3#e 4#f 999#g 888#dtype: int64##False

(二) 删 1、del

series_2 = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])del series_2['c']print(series_2)# result :a 0b 1d 3e 4dtype: int64

2、drop 生成新对象(不改变源对象)

(1)删除单条数据res = series_2.drop('a')print(res,res is series_2,sep='n')# result :b 1d 3e 4dtype: int64##################################################################(2)删除多条数据res = series_2.drop(['b','d'])print(res,res is series_2,sep='n')# result :a 0e 4dtype: int64False(3) 使用inplace属性为True不生成新对象res = series_2.drop('a',inplace=True) # 此时res为None

(三) 改

series_3 = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])print(series_3)# result:a 0b 1c 2d 3e 4dtype: int64

1、位置索引

series_3[4] = 9print(series_3)a 0b 1c 2d 3e 9dtype: int64

2、标签索引

series_3['c'] = 5print(series_3)a 0b 1c 5d 3e 4dtype: int64

(四) 查

import numpy as npimport pandas as pdseries_4 = pd.Series(np.arange(5),index=['a','b','c','d','e'])print(series_4)#a 0#b 1#c 2#d 3#e 4#dtype: int32

1、获取单个或连续数据

索引位置

print('''series_4[4] = ''',series_4[4])#reultseries_4[4] = 4

索引名称

print('''series_4['c'] = ''',series_4['c'])#resultseries_4['c'] = 2

位置索引 切片

不包含末位

series_4[2:4] # 数学表示为 [2,4) OR [2,3]另一种写法 : series_4.iloc[0:3])#c 2#d 3#dtype: int32

名称索引 切片

包含末位

series_4['a':'c'] # 数学表示为 ['a','c']另一种写法 : series_4.loc['a':'c']#a 0#b 1#c 2#dtype: int32

2、获取非连续数据

不连续 位置索引

print(series_4[[0,2,4]])#a 0#c 2#e 4#dtype: int32

不连续 名称索引

print(series_4[['b','d']])#b 1#d 3#dtype: int32

布尔索引

print(series_4[series_4 > 2])# series_4 > 2 为布尔型Series对象# series_4[series_4 > 2] 获取结果为True的数据#d 3#e 4#dtype: int32

Dataframe对象 (一)增

import numpy as npimport pandas as pddf1 = pd.Dataframe(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])print(df1) a b c d1 0 1 2 32 4 5 6 73 8 9 10 11

增加列

(1) 方式一 : df1[4] = 9print('df1 : ',df1,sep = 'n')# result:df1 : a b c d 41 0 1 2 3 92 4 5 6 7 93 8 9 10 11 9(2) 方式二 : df1[5] = [11,22,33]print('df1 : ',df1,sep = 'n')# result:df1 : a b c d 4 51 0 1 2 3 9 112 4 5 6 7 9 223 8 9 10 11 9 33(3) 方法三 : 使用insert方法df1.insert(0,'e',[9,99,999]) # 在0位置添加 列 e ,其value为 [9,99,999]print('df1 : ',df1,sep = 'n')# result:df1 : e a b c d 4 51 9 0 1 2 3 9 112 99 4 5 6 7 9 223 999 8 9 10 11 9 33

增加行

(1) 方法一 : 标签索引loc [works on labels in the index]df1.loc['z'] = [1,1,1,1]df1.loc['y'] = 1print(df1)# result : a b c d1 0 1 2 32 4 5 6 73 8 9 10 11z 1 1 1 1y 1 1 1 1(2) 方法二 : 生成新的Dataframe对象res = df1.append({'a':'a'},ignore_index=True) # 生成新的Dataframe对象print(res,res is df1,sep='n')# result : a b c d0 0 1.0 2.0 3.01 4 5.0 6.0 7.02 8 9.0 10.0 11.03 a NaN NaN NaNFalse

(二)删

import numpy as npimport pandas as pddf2 = pd.Dataframe(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])print(df2)df2: a b c d1 0 1 2 32 4 5 6 73 8 9 10 11#############################################################################################1.删除列(1)del df2['c']# result(df2) a b d1 0 1 32 4 5 73 8 9 11(2) df2.drop('b',axis=1) # drop默认删除行(即axis=0),生成新对象(3) df2.drop(['b','d'],axis='columns')# axis='columns'与axis=1效果相同2.删除行df2.drop([1,3])

(三) 改

df3 = pd.Dataframe(np.arange(12).reshape(3,4),index=['A','B','C'],columns=['a','b','c','d'])print(df3)###########RESULT############## a b c dA 0 1 2 3B 4 5 6 7C 8 9 10 11

1、属性(only column)

df3.a = 9###########RESULT############## a b c dA 9 1 2 3B 9 5 6 7C 9 9 10 11df3.a = [1,11,111]###########RESULT############## a b c dA 1 1 2 3B 11 5 6 7C 111 9 10 11

2、标签索引(only column)

若中括号内无该索引,便增加新的一列

df3['b'] = 9###########RESULT############## a b c dA 0 9 2 3B 4 9 6 7C 8 9 10 11df3['b'] = [1,11,111]###########RESULT############## a b c dA 0 1 2 3B 4 11 6 7C 8 111 10 11

3、loc

1、修改一行df3.loc['A'] = [9,99,999,9999] # df3.loc['A'] = 92、修改具体某一位置df3.loc['B','c'] = 666###########RESULT############## a b c dA 9 99 999 9999B 4 5 666 7C 8 9 10 11

(四) 查

df4 = pd.Dataframe(np.arange(12).reshape(3,4),index=['A','B','C'],columns=['a','b','c','d'])###################df4########################### a b c dA 0 1 2 3B 4 5 6 7C 8 9 10 11

1、获取单列

(1) print(df4['c'])###########RESULT##############A 2B 6C 10Name: c, dtype: int32(2) print(df4[['c']])###########RESULT############## cA 2B 6C 10

2、获取单个值

(1) print(df4['c']['B']) ## 列在前,行在后###########RESULT##############6(2) print(df4.loc['B', 'c'])###########RESULT##############6

3、获取多列

print(df4[['b', 'd']])###########RESULT############## b dA 1 3B 5 7C 9 11

4、获取多行(切片)

print(df4[:2]) # 获取 0,1 两行###########RESULT############## a b c dA 0 1 2 3B 4 5 6 7

5、获取多行多列

df4.loc['A':'B','b':'c']# 获取 A至B行,b至c列df4.iloc[0:2,1:3]# 获取 A至B行,b至c列###########RESULT############## b cA 1 2B 5 6

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。