1. <em id="yud1w"><acronym id="yud1w"><u id="yud1w"></u></acronym></em>
      
      
      <button id="yud1w"></button>

      python

      当前位置:首页?>?Pandas教程?>?当前文章

      Pandas教程

      Series数据增删改查、追加、重新索引、对齐(相加)、重新索引

      2020-10-28 71赞 python中国网
      每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

        任何数据类型都必须具备增删改查的操作,否则就无法对数据进行运算。本文讲解Series数据的增删改查、重新索引、对齐操作。

        1、增加元素

        1、直接设置一个key来添加元素

        2、append()函数,返回新的Series,参数必须是Series or list/tuple of Series(多个Series组成的列表)

      # -*- coding: utf-8 -*-
      
      import pandas as pd
      import numpy as np
      
      # 添加元素
      s = pd.Series([1,2],index=['a','b'])
      s['c'] = '不错'  # 添加个索引
      print(s)
      print('---------------')
      
      # append方式添加元素
      s2 = pd.Series([11,22],index=['a','b'])
      s = s2.append(s2)  # 追加一个Series
      print(s)
      
      a     1
      b     2
      c    不错
      dtype: object
      ---------------
      a    11
      b    22
      a    11
      b    22
      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里面这种操作会报警告),具体看下面的代码。

        2、通过apply函数更改

        Series.apply(func, convert_dtype=True, args=(), **kwds),func为函数名,args是func的位置参数,**kwds为func的关键字参数。

      # -*- 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
      
      # -*- coding: utf-8 -*-
      import pandas as pd
      import numpy as np
      
      # 通过apply函数更改元素
      arr = np.random.rand(3)
      s = pd.Series(arr,index=['a','b','c'])
      
      s_new = s.apply(lambda x:x+10)
      print(s_new)
      
      def add(i):
          i = i + 10
          return i
      s_new = s.apply(add)
      print(s_new)
      
      a    10.058797
      b    10.399459
      c    10.245513
      dtype: float64
      a    10.058797
      b    10.399459
      c    10.245513
      dtype: float64
      
      # -*- coding: utf-8 -*-
      import pandas as pd
      import numpy as np
      
      # args参数
      arr = np.random.rand(3)
      s = pd.Series(arr,index=['a','b','c'])
      
      def add(i,num):
          i = i + num
          return i
      s_new = s.apply(add,args=(10,))
      print(s_new)
      
      # kargs参数
      def add2(i,**kargs):
          for num in kargs.values():
              i += num
          return i
      s_new = s.apply(add2,num1=10,num2=20)
      print(s_new)
      
      
      a    10.324784
      b    10.005687
      c    10.747990
      dtype: float64
      a    30.324784
      b    30.005687
      c    30.747990
      dtype: float64
      
      

        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
      
      

      文章评论

      Series数据增删改查、追加、重新索引、对齐(相加)、重新索引文章写得不错,值得赞赏
      国产99视频精品免视看6