您的位置: 网站首页> Pandas教程> 当前文章
Series数据增删改查、追加、重新索引、对齐(相加)、重新索引
老董-我爱我家房产SEO2020-10-28179围观,104赞
任何数据类型都必须具备增删改查的操作,否则就无法对数据进行运算。本文讲解Series数据的增删改查、重新索引、对齐操作。
1、增加元素
1)直接设置一个key来添加元素
# -*- coding: utf-8 -*- import pandas as pd import numpy as np # 添加元素 s = pd.Series([1,2],index=['a','b']) s['c'] = '不错' # 添加个索引 print(s)
a 1 b 2 c 不错 dtype: object
2)append()函数,该函数返回新的Series,参数必须是Series or list/tuple of Series,可以理解为上下拼接2个series。
# -*- coding: utf-8 -*- import pandas as pd import numpy as np # append方式添加元素 s1 = pd.Series([1, 2, 3]) s2 = pd.Series([4, 5, 6]) s3 = s1.append(s2) print(s3)
0 1 1 2 2 3 0 4 1 5 2 6 dtype: int64
2、删除元素
drop()函数,参数可以是单个或者多个索引(列表形式),inplace参数默认False,返回新的Series。inplace为True则修改原来的Series。
# -*- coding: utf-8 -*- import pandas as pd import numpy as np # 删除操作 arr = np.random.rand(3) s = pd.Series(arr,index=['a','b','c']) res = s.drop('a') #删除单个元素 print(res) print('-----------') s2 = pd.Series(arr) res = s2.drop([0,1]) #删除多个元素 print(res) print('-----------') s3 = pd.Series(arr) s3.drop([0,1],inplace=True) #删除多个元素 print(s3)
b 0.185835 c 0.740068 dtype: float64 ----------- 2 0.740068 dtype: float64 ----------- 2 0.740068 dtype: float64
3、更改元素
1)直接通过索引改
直接更改索引值是没问题的,如果进行一轮筛选从中选取目标数据再进行更改则对原Series是不成效的(在dataframe里面这种操作会报警告),具体看下面的代码。
# -*- coding: utf-8 -*- import pandas as pd import numpy as np # 通过索引更改元素 arr = np.random.rand(3) s = pd.Series(arr,index=list('abc')) s['a'] = 100 #修改为100 print(s) # 标签a的值为100 s[s>99]['a']=1 #这个更改对s不生效 print(s) # s没有变化 print('============') res = s[s>99] #单独拿来作为1个Series res['a']= 1 print(res)
a 100.000000 b 0.892186 c 0.287931 dtype: float64 a 100.000000 b 0.892186 c 0.287931 dtype: float64 ============ a 1.0 dtype: float64
2)通过apply函数更改
Series.apply(func, convert_dtype=True, args=(), **kwds),func为函数名,代表把Series中的每个元素做1次操作。
s1 = pd.Series([1, 2, 3]) def add_100(element): return element + 100 s_add = s1.apply(add_100) print(s_add)
0 101 1 102 2 103 dtype: int64
4、查看元素
1、head() 默认前5条数据,可以设置参数显示几条。
2、tail() 默认后5条数据,可以设置参数显示几条。
import pandas as pd import numpy as np arr = np.random.rand(2) s = pd.Series(arr,index=['a','b']) print(s) print('---------') print(s.head(1)) print('----------') print(s.tail(1))
a 0.989174 b 0.474133 dtype: float64 --------- a 0.989174 dtype: float64 ---------- b 0.474133 dtype: float64
5、重新索引
不是修改索引名,而是按照新的索引排序生成新Series。
1、reindex()函数实现,返回新的Series,如果新索引和旧索引有重复则会保留原有的索引及对应的值。
2、通过fill_value参数填充缺失值。
import pandas as pd import numpy as np # 重新索引 d = {'a': 1, 'b': 2, 'c': 3} s = pd.Series(d, index=['a', 'b', 'c', 'd']) print(s) print('------------') s1 = s.reindex(['a','b','aa','bb']) print(s1) print('------------') s2 = s1.reindex(['a','b','cc','dd'],fill_value='哈哈') print(s2)
a 1.0 b 2.0 c 3.0 d NaN dtype: float64 ------------ a 1.0 b 2.0 aa NaN bb NaN dtype: float64 ------------ a 1 b 2 cc 哈哈 dd 哈哈 dtype: object
6、对齐操作
1、两个Series求和(相当于add函数),索引相同的会自动相加(数据拼接时也会根据索引对齐,后续会介绍)。
2、2个Series求和时,如果某Series的index参数的值(索引值)有两个相同的,也可以照常参与相加(但是创建Series时应避免出现相同的索引)。
import pandas as pd import numpy as np # 对齐操作 arr = [10,20] s = pd.Series(arr,index=['a','b']) print(s) print('----------------') s2 = pd.Series(arr,index=['a','c']) print(s2) print('=================') print(s + s2) print('----------------') s3 = pd.Series(arr,index=['a','a']) # 索引值相同 print(s3) print('================') print(s + s3)
a 10 b 20 dtype: int64 ---------------- a 10 c 20 dtype: int64 ================= a 20.0 b NaN c NaN dtype: float64 ---------------- a 10 a 20 dtype: int64 ================ a 20.0 a 30.0 b NaN dtype: float64
本文就此结束,感谢IT人士的关注Series数据增删改查、追加、重新索引、对齐(相加)、重新索引,本文合作企业直达:更多推荐。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
Series数据增删改查、追加、重新索引、对齐(相加)、重新索引文章写得不错,值得赞赏