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

      python

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

      Pandas教程

      Dataframe数据的增删改查,对齐(相加),转置,按值(索引)排序

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

        数据转置

        行列标签一起转置,利用.T实现

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      d = {'col1': [1,2,3], 'col2': [4,5,6],'col3':[7,8,9]}
      df = pd.DataFrame(data=d)
      print(df)
      print('-----------')
      print(df.T)
      
         col1  col2  col3
      0     1     4     7
      1     2     5     8
      2     3     6     9
      -----------
            0  1  2
      col1  1  2  3
      col2  4  5  6
      col3  7  8  9
      

        数据修改

        1、通过直接索引修改整行和列

        2、使用df.at修改单个值(建议新值和旧值数据类型应保持一致)

        3、参考上一节loc和iloc的用法,使用df.loc或者df.iloc来灵活赋值

        4、复制操作时候一个经典错误参考SettingWithCopyWarning

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      d = {'col1': [1,2,3], 'col2': [4,'66',6],'col3':[7,8,9]}
      df = pd.DataFrame(data=d)
      print(df)
      print('------------------')
      
      df['col1'] = 'aaa' # 直接修改一列
      print(df)
      print('-------------------')
      
      df.at[1,'col2'] = 'py' #索引为1的行的col2列
      print(df)
      print('-----------')
      
      # df.loc[[1]]['col1'] = 'bbb' # 这样是错的,不生效
      df.loc[[1],'col1'] = 'bbb' # 这样是对的
      print(df)
      
         col1 col2  col3
      0     1    4     7
      1     2   66     8
      2     3    6     9
      ------------------
        col1 col2  col3
      0  aaa    4     7
      1  aaa   66     8
      2  aaa    6     9
      -------------------
        col1 col2  col3
      0  aaa    4     7
      1  aaa   py     8
      2  aaa    6     9
      -----------
      并未变化
        col1 col2  col3
      0  aaa    4     7
      1  bbb   py     8
      2  aaa    6     9
      

        数据删除

        1、del

        2、drop函数

        drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

        常用操作

        df.drop(['a', 'd'], axis=0) 删除索引为a、d的行,默认axis=0

        df.drop(['a', 'd'], axis=1) 删除索引为a、d的列

        df.drop(['a', 'd'], axis=1 ,inplace=False) 生成新df,不改变原df。默认是False

        df.drop(['a', 'd'], axis=1 ,inplace=False) 改变原df

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      d = {'col1': [1,2,3], 'col2': [4,'66',6],'col3':[7,8,9]}
      df = pd.DataFrame(data=d)
      print(df)
      print('------------------')
      
      # del删除col1列
      del(df['col1'])
      print(df)
      print('------------')
      
      # drop删除索引为1的行
      res = df.drop([1])
      print(res)
      print('-------------')
      
      #删除索引为col2的列
      df.drop(['col2'],axis=1,inplace=True)
      print(df)
      
         col1 col2  col3
      0     1    4     7
      1     2   66     8
      2     3    6     9
      ------------------
        col2  col3
      0    4     7
      1   66     8
      2    6     9
      ------------
        col2  col3
      0    4     7
      2    6     9
      -------------
         col3
      0     7
      1     8
      2     9
      

        对齐(相加)

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      d1 = {'col1': [1, 2], 'col2': [3, 4]}
      d2 = {'col1': [4, 8], 'col2': [7, 9],'col3':[1,2]}
      df1 = pd.DataFrame(data=d1)
      df2 = pd.DataFrame(data=d2)
      df = df1 + df2
      print(df)
      
      
         col1  col2  col3
      0     5    10   NaN
      1    10    13   NaN
      
      

        排序

        1)按值排序

        sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)

        常用参数:

        by:字符串或者列表;如果axis=0,那么by="列名";如果axis=1,那么by="行名"。

        axis:默认值0,默认按照列排序,即纵向排序;如果为1,则是横向排序。

        ascending:布尔型,True则升序,如果by=['列名1','列名2'],则该参数可以是[True, False],即第一字段升序,第二个降序。

        inplace:布尔型,默认False代表返回新的对象。

        na_position:{‘first’, ‘last’}, 默认是‘last’,默认缺失值排在最后面。

        单列排序及多列排序

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
      print(df)
      print('------------')
      
      df1 = df.sort_values(by='b',axis=0)
      print(df1)
      print('--------------')
      
      # 多列排序
      df2 = df.sort_values(by=['b','a'],axis=0,ascending=[False,True])
      print(df2)
      
         b  a  c
      2  1  4  1
      0  2  3  3
      1  3  2  8
      3  2  1  2
      ------------
         b  a  c
      2  1  4  1
      0  2  3  3
      3  2  1  2
      1  3  2  8
      --------------
         b  a  c
      1  3  2  8
      3  2  1  2
      0  2  3  3
      2  1  4  1
      

        2)按索引排序

        sort_index函数

      sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)

        常用参数

        axis:默认值0,0代表行索引排序,1代表按照列索引排序。

        ascending:布尔型,True则升序

        inplace:布尔型,是否用排序后的数据替换现有的数据

        na_position:{‘first’, ‘last’}, 默认是‘last’,默认缺失值排在最后面。

      # -*- coding: utf-8 -*-
      import pandas as pd
      
      df = pd.DataFrame({'b':[1,2,2,3],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
      print(df)
      print('----------')
      
      #默认按“行标签”升序排序
      df1 = df.sort_index()
      print(df1)
      print('-------------')
      
      #按“列标签”降排序
      df2 = df.sort_index(axis=1,ascending=False)
      print(df2)
      
         b  a  c
      2  1  4  1
      0  2  3  3
      1  2  2  8
      3  3  1  2
      ----------
         b  a  c
      0  2  3  3
      1  2  2  8
      2  1  4  1
      3  3  1  2
      -------------
         c  b  a
      2  1  1  4
      0  3  2  3
      1  8  2  2
      3  2  3  1
      

      文章评论

      Dataframe数据的增删改查,对齐(相加),转置,按值(索引)排序文章写得不错,值得赞赏
      国产99视频精品免视看6