Python Pandas索引 行列索引号的设置和修改

添加行列索引号

  在Python中,如果表没有索引,会默认使用从0开始的自然数做索引。

  通过给表df的columns 参数传入列索引值,index参数传入行索引值达到为无索引表添加索引的目的。

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
df.columns=["","","",""]
df.index=[1,2,3,4,5,6]
print(df)

结果:

   一   二    三          四
1  A1  张通  101 2018-08-03
2  A2  李谷  102 2018-08-09
3  A3  孙凤  103 2018-08-10
4  A3  孙凤  103 2018-08-10
5  A4  赵恒  104 2018-08-11
6  A5  赵恒  104 2018-08-12

 

重置索引

重新设置索引

  在Python中可以利用set_index() 方法重新设置索引列,在set_index()里指明要用作行索引的列的名称即可。

 

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
print(df.set_index("订单编号"))
print("------------")
print(df.set_index("订单编号").index)
print("------------")
print(df.columns)
print(df.index)

 

结果:

  订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
     客户姓名  唯一识别码       成交时间
订单编号                       
A1     张通    101 2018-08-03
A2     李谷    102 2018-08-09
A3     孙凤    103 2018-08-10
A3     孙凤    103 2018-08-10
A4     赵恒    104 2018-08-11
A5     赵恒    104 2018-08-12
------------
Index(['A1', 'A2', 'A3', 'A3', 'A4', 'A5'], dtype='object', name='订单编号') #订单编号是行索引总的名称。
Index(['订单编号', '客户姓名', '唯一识别码', '成交时间'], dtype='object')
RangeIndex(start=0, stop=6, step=1)

 

层次化索引

  在重新设置索引时,还可以给set_index()方法传入两个或多个列名,我们把这种一个表中用多列来做索引的方式称为层次化索引。

层次化索引一般用在某一列中含有多个重复值的情况下。(相当于复合主键)。

 

 

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
print(df.set_index(["客户姓名","订单编号"]))
print("------------")
print(df.set_index(["客户姓名","订单编号"]).index)

 

结果:

  订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
           唯一识别码       成交时间
客户姓名 订单编号                  
张通   A1      101 2018-08-03
李谷   A2      102 2018-08-09
孙凤   A3      103 2018-08-10
     A3      103 2018-08-10
赵恒   A4      104 2018-08-11
     A5      104 2018-08-12
------------
MultiIndex([('张通', 'A1'),
            ('李谷', 'A2'),
            ('孙凤', 'A3'),
            ('孙凤', 'A3'),
            ('赵恒', 'A4'),
            ('赵恒', 'A5')],
           names=['客户姓名', '订单编号'])

 

 

重命名索引

  重命名索引是针对现有索引名进行修改的,就是改字段名。

在Python中,我们利用rename()方法,在rename后的括号里指明要修改的行索引及列索引名。

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
print(df.rename(columns={"订单编号":"新订单编号",
                         "客户姓名":"新客户姓名"}))
print("------------")
print(df.rename(columns={"订单编号":"新订单编号",
                         "客户姓名":"新客户姓名"},
                index={0:"",1:"",2:"",3:"",4:"",5:""}))  #数字不加单引、双引包围符等,加了反而会识别不了出错。

结果:

订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
  新订单编号 新客户姓名  唯一识别码       成交时间
0    A1    张通    101 2018-08-03
1    A2    李谷    102 2018-08-09
2    A3    孙凤    103 2018-08-10
3    A3    孙凤    103 2018-08-10
4    A4    赵恒    104 2018-08-11
5    A5    赵恒    104 2018-08-12
------------
  新订单编号 新客户姓名  唯一识别码       成交时间
零    A1    张通    101 2018-08-03
一    A2    李谷    102 2018-08-09
二    A3    孙凤    103 2018-08-10
三    A3    孙凤    103 2018-08-10
四    A4    赵恒    104 2018-08-11
五    A5    赵恒    104 2018-08-12

 

重置索引

  重置索引主要用在层次化索引表中,重置索引是将索引列当作一个columns进行返回。

       在Python 利用的是reset_index()方法,reset_index()方法常用于数组、数据透视表中。reset_index()方法常用的参数如下:

reset_index(level=None,drop=False,inplace=False)

level参数用来指定要将层次化索引的第几级别转化为columns,第一个索引为0级,第二个索引为1级,默认为全部索引,即默认把索引全部转化为columns。

drop参数用来指定是否将原索引删掉,即不作为一个新的columns,默认为False,即不删除原索引。

inplace参数用来指定是否修改原数据表。

 

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
dff=df.set_index(["订单编号","客户姓名"])
print(dff)
print("------------")
print(dff.reset_index()) #默认将全部index转化为columns

结果:

 订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
           唯一识别码       成交时间
订单编号 客户姓名                  
A1   张通      101 2018-08-03
A2   李谷      102 2018-08-09
A3   孙凤      103 2018-08-10
     孙凤      103 2018-08-10
A4   赵恒      104 2018-08-11
A5   赵恒      104 2018-08-12
------------
  订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12

 

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
dff=df.set_index(["订单编号","客户姓名"])
print(dff)
print("------------")
print(dff.reset_index(level=0)) #将第0级索引转化为columns.

 结果:

 订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
           唯一识别码       成交时间
订单编号 客户姓名                  
A1   张通      101 2018-08-03
A2   李谷      102 2018-08-09
A3   孙凤      103 2018-08-10
     孙凤      103 2018-08-10
A4   赵恒      104 2018-08-11
A5   赵恒      104 2018-08-12
------------
     订单编号  唯一识别码       成交时间
客户姓名                       
张通     A1    101 2018-08-03
李谷     A2    102 2018-08-09
孙凤     A3    103 2018-08-10
孙凤     A3    103 2018-08-10
赵恒     A4    104 2018-08-11
赵恒     A5    104 2018-08-12

 

import pandas as pd
df=pd.read_excel(r'C:\Users\Administrator\Desktop\Tableau柱形对比图&同比折线图\测试.xlsx')
print(df)
print("------------")
dff=df.set_index(["订单编号","客户姓名"])
print(dff)
print("------------")
print(dff.reset_index(drop=True)) #将原索引删除,不加入columns

结果:

订单编号 客户姓名  唯一识别码       成交时间
0   A1   张通    101 2018-08-03
1   A2   李谷    102 2018-08-09
2   A3   孙凤    103 2018-08-10
3   A3   孙凤    103 2018-08-10
4   A4   赵恒    104 2018-08-11
5   A5   赵恒    104 2018-08-12
------------
           唯一识别码       成交时间
订单编号 客户姓名                  
A1   张通      101 2018-08-03
A2   李谷      102 2018-08-09
A3   孙凤      103 2018-08-10
     孙凤      103 2018-08-10
A4   赵恒      104 2018-08-11
A5   赵恒      104 2018-08-12
------------
   唯一识别码       成交时间
0    101 2018-08-03
1    102 2018-08-09
2    103 2018-08-10
3    103 2018-08-10
4    104 2018-08-11
5    104 2018-08-12

 

 

  

 

  

posted on 2020-06-10 18:18  若阳y  阅读(97)  评论(0)    收藏  举报

导航