pandas - DataFrame -修改索引、列标签

pandas - DataFrame -修改索引、列标签

1、 修改列标签


def renameColName():
    """
    修改列标签
    :return:
    """
    data = [
        [11, 12, 13, 14],
        [21, 22, 23, 24],
        [31, 32, 33, 34],
        [41, 42, 43, 44],
        [51, 52, 53, 54]
    ]
    columns = ['col-1', 'col-2', 'col-3', 'col-4']
    index = ['idx-1', 'idx-2', 'idx-3', 'idx-4', 'idx-5']

    df = pd.DataFrame(data=data, index=index, columns=columns)

    # 顺序修改列名
    df1 = df.copy()
    df1.columns = ['col-11', 'col-12', 'col-3', 'col-4']
    print(df1)

    # 映射修改列名
    df2 = df.copy().rename(columns={
        "col-1": "col-101",
        "col-2": "col-201",
        "col-3": "col-301"
    })
    print(df2)

df1 顺序修改列名 返回结果:

	 	   col-11  col-12  col-3  col-4
	idx-1      11      12     13     14
	idx-2      21      22     23     24
	idx-3      31      32     33     34
	idx-4      41      42     43     44
	idx-5      51      52     53     54

df2 映射修改列名 返回结果:

	       col-101  col-201  col-301  col-4
	idx-1       11       12       13     14
	idx-2       21       22       23     24
	idx-3       31       32       33     34
	idx-4       41       42       43     44
	idx-5       51       52       53     54

2、 reindex 修改数据


def reIndex():
    """
    重新设定索引和columns
    :return:
    """
    data = [
        [11, 12, 13, 14],
        [21, 22, 23, np.nan],
        [31, 32, 33, 34],
        [41, 42, 43, np.nan],
        [51, 52, 53, 54]
    ]
    columns = ['col-1', 'col-2', 'col-3', 'col-4']
    index = ['idx-1', 'idx-2', 'idx-3', 'idx-4', 'idx-5']

    df = pd.DataFrame(data=data, index=index, columns=columns)

    # 重置行索引-修改行数据
    reindex = df.copy()
    reindex = reindex.reindex(['idx-0', 'idx-1', 'idx-2', 'idx-3', 'idx-4', 'idx-5', 'idx-10'])
    print(reindex)

    # 重置列索引-修改列数据
    recolumn = df.copy()
    recolumn = recolumn.reindex(columns=['col-0', 'col-1', 'col-2', 'col-3', 'col-4', 'col-10'])
    print(recolumn)

    # 重置行、列索引-修改行列数据
    reindexAndColumn = df.copy()
    reindexAndColumn = reindexAndColumn.reindex(
        index=['idx-0', 'idx-1', 'idx-2', 'idx-3', 'idx-4', 'idx-5', 'idx-10'],
        columns=['col-0', 'col-1', 'col-2', 'col-3', 'col-4', 'col-10'])
    print(reindexAndColumn)

    # 删除并重新设置索引
    reSetIndex = df.copy()
    reSetIndex = reSetIndex.dropna().reset_index(drop=True)
    print(reSetIndex)

reSetIndex 原始数据:

	        col-1  col-2  col-3  col-4
	idx-1    11.0   12.0   13.0   14.0
	idx-2    21.0   22.0   23.0    NaN
	idx-3    31.0   32.0   33.0   34.0
	idx-4    41.0   42.0   43.0    NaN
	idx-5    51.0   52.0   53.0   54.0

reindex 重置行索引-修改行数据 返回结果:

	        col-1  col-2  col-3  col-4
	idx-0     NaN    NaN    NaN    NaN
	idx-1    11.0   12.0   13.0   14.0
	idx-2    21.0   22.0   23.0    NaN
	idx-3    31.0   32.0   33.0   34.0
	idx-4    41.0   42.0   43.0    NaN
	idx-5    51.0   52.0   53.0   54.0
	idx-10    NaN    NaN    NaN    NaN

recolumn 重置列索引-修改列数据 返回结果:

	       col-0  col-1  col-2  col-3  col-4  col-10
	idx-1    NaN     11     12     13   14.0     NaN
	idx-2    NaN     21     22     23    NaN     NaN
	idx-3    NaN     31     32     33   34.0     NaN
	idx-4    NaN     41     42     43    NaN     NaN
	idx-5    NaN     51     52     53   54.0     NaN

reindexAndColumn 重置行、列索引-修改行列数据 返回结果:

		        col-0  col-1  col-2  col-3  col-4  col-10
	idx-0     NaN    NaN    NaN    NaN    NaN     NaN
	idx-1     NaN   11.0   12.0   13.0   14.0     NaN
	idx-2     NaN   21.0   22.0   23.0    NaN     NaN
	idx-3     NaN   31.0   32.0   33.0   34.0     NaN
	idx-4     NaN   41.0   42.0   43.0    NaN     NaN
	idx-5     NaN   51.0   52.0   53.0   54.0     NaN
	idx-10    NaN    NaN    NaN    NaN    NaN     NaN

reSetIndex 删除并重新设置索引 返回结果:

		   col-1  col-2  col-3  col-4
	0     11     12     13   14.0
	1     31     32     33   34.0
	2     51     52     53   54.0

3、 set_index将列设置索引


def setIndex():
    """
    将列设置索引
    :return:
    """
    data = [
        ["组织结构-1", "组织结构-1-1", 11, 12],
        ["组织结构-1", "组织结构-1-2", 11, 12],
        ["组织结构-1", "组织结构-1-3", 11, 12],
        ["组织结构-1", "组织结构-1-3", 13, 14],
        ["组织结构-2", "组织结构-2-1", 21, 22],
        ["组织结构-2", "组织结构-2-1", 21, 22],
        ["组织结构-2", "组织结构-2-3", 21, 22],
        ["组织结构-3", "组织结构-3-1", 31, 32],
        ["组织结构-3", "组织结构-3-1", 31, 32],
        ["组织结构-3", "组织结构-3-3", 31, 32],
        ["组织结构-4", "组织结构-4-1", 41, 42],
        ["组织结构-4", "组织结构-4-1", 41, 42],
        ["组织结构-4", "组织结构-4-3", 41, 42]
    ]
    columns = ['一级单位', '二级单位', '男员工人数', '女员工人数']

    df = pd.DataFrame(data=data, columns=columns)

    # 单列将列设置为索引
    setIndex_one = df.copy()
    setIndex_one = setIndex_one.set_index(["一级单位"])
    print(setIndex_one)

    # 多列设置为索引
    setIndex_two = df.copy()
    setIndex_two = setIndex_two.set_index(["一级单位", "二级单位"])
    print(setIndex_two)

setIndex_one 单列将列设置为索引 返回结果:

	                二级单位  男员工人数  女员工人数
	一级单位                                        
	组织结构-1  组织结构-1-1          11          12
	组织结构-1  组织结构-1-2          11          12
	组织结构-1  组织结构-1-3          11          12
	组织结构-1  组织结构-1-3          13          14
	组织结构-2  组织结构-2-1          21          22
	组织结构-2  组织结构-2-1          21          22
	组织结构-2  组织结构-2-3          21          22
	组织结构-3  组织结构-3-1          31          32
	组织结构-3  组织结构-3-1          31          32
	组织结构-3  组织结构-3-3          31          32
	组织结构-4  组织结构-4-1          41          42
	组织结构-4  组织结构-4-1          41          42
	组织结构-4  组织结构-4-3          41          42

setIndex_two 多列设置为索引 返回结果:

	                            男员工人数   女员工人数
	一级单位  		 二级单位                            
	组织结构-1 	 组织结构-1-1          11          12
				 组织结构-1-2          11          12
	             组织结构-1-3          11          12
	             组织结构-1-3          13          14
	组织结构-2	 组织结构-2-1          21          22
	           	 组织结构-2-1          21          22
	           	 组织结构-2-3          21          22
	组织结构-3 	 组织结构-3-1          31          32
	           	 组织结构-3-1          31          32
	             组织结构-3-3          31          32
	组织结构-4	 组织结构-4-1          41          42
	             组织结构-4-1          41          42
	             组织结构-4-3          41          42
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值