栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas索引操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas索引操作

Series对象 (一) 增
	import numpy as np
	import pandas as pd
	
	series_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'] = 999
	print(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    0
b    1
d    3
e    4
dtype: int64
2. drop 生成新对象(不改变源对象)
(1)删除单条数据
	res = series_2.drop('a')
	print(res,res is series_2,sep='n')
# result :
b    1
d    3
e    4
dtype: int64	
##################################################################
(2)删除多条数据
	res = series_2.drop(['b','d'])
	print(res,res is series_2,sep='n')
# result :
a    0
e    4
dtype: int64
False
(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    0
b    1
c    2
d    3
e    4
dtype: int64

1. 位置索引

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

2. 标签索引

	series_3['c'] = 5
	print(series_3)
a    0
b    1
c    5
d    3
e    4
dtype: int64
(四) 查
	import numpy as np
	import pandas as pd
	
	series_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])
#	reult
series_4[4] =  4

索引名称

	print('''series_4['c'] = ''',series_4['c'])
#	result
series_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 np
	import pandas as pd
	
	df1 = pd.Dataframe(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])
	print(df1)
	
	   a  b   c   d
	1  0  1   2   3
	2  4  5   6   7
	3  8  9  10  11
增加列
(1) 方式一 : 
	df1[4] = 9
	print('df1 : ',df1,sep = 'n')
	
# result:
	df1 :
	   a  b   c   d  4
	1  0  1   2   3  9
	2  4  5   6   7  9
	3  8  9  10  11  9
	
(2) 方式二 : 	
	df1[5] = [11,22,33]
	print('df1 : ',df1,sep = 'n')
# result:
	df1 : 
	   a  b   c   d  4   5
	1  0  1   2   3  9  11
	2  4  5   6   7  9  22
	3  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   5
1    9  0  1   2   3  9  11
2   99  4  5   6   7  9  22
3  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'] = 1
	print(df1)

# result :
	   a  b   c   d
	1  0  1   2   3
	2  4  5   6   7
	3  8  9  10  11
	z  1  1   1   1
	y  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     d
	0  0  1.0   2.0   3.0
	1  4  5.0   6.0   7.0
	2  8  9.0  10.0  11.0
	3  a  NaN   NaN   NaN
	False
(二)删
	import numpy as np
	import pandas as pd
	
	df2 = pd.Dataframe(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])
	print(df2)
	
df2:	
   a  b   c   d
1  0  1   2   3
2  4  5   6   7
3  8  9  10  11
#############################################################################################
	1.删除列
		(1)	del df2['c']
	# result(df2)
	   a  b   d
	1  0  1   3
	2  4  5   7
	3  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   d
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
1. 属性(only column)
	df3.a = 9
###########RESULT##############
   a  b   c   d
A  9  1   2   3
B  9  5   6   7
C  9  9  10  11

	df3.a = [1,11,111]
###########RESULT##############
     a  b   c   d
A    1  1   2   3
B   11  5   6   7
C  111  9  10  11
2. 标签索引(only column)

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

	df3['b'] = 9
###########RESULT##############
   a  b   c   d
A  0  9   2   3
B  4  9   6   7
C  8  9  10  11

	df3['b'] = [1,11,111]
###########RESULT##############
   a    b   c   d
A  0    1   2   3
B  4   11   6   7
C  8  111  10  11
3. loc
1. 修改一行
	df3.loc['A'] = [9,99,999,9999] # df3.loc['A'] = 9
2. 修改具体某一位置
	df3.loc['B','c'] = 666
###########RESULT##############
   a   b    c     d
A  9  99  999  9999
B  4   5  666     7
C  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   d
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
1. 获取单列
(1) print(df4['c'])
###########RESULT##############
A     2
B     6
C    10
Name: c, dtype: int32

(2) print(df4[['c']])
###########RESULT##############
    c
A   2
B   6
C  10
2. 获取单个值
(1) print(df4['c']['B']) ## 列在前,行在后
###########RESULT##############
6
(2) print(df4.loc['B', 'c'])
###########RESULT##############
6
3. 获取多列
	print(df4[['b', 'd']])
###########RESULT##############
   b   d
A  1   3
B  5   7
C  9  11
4. 获取多行(切片)
	print(df4[:2]) 		# 获取 0,1 两行
###########RESULT##############
   a  b  c  d
A  0  1  2  3
B  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  c
A  1  2
B  5  6
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号