搜索

查看: 3083|回复: 11

[Python] Pandas.DataFrame的行名和列名的修改

[复制链接]
发表于 2023-5-4 17:23:04 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:23:04 3083 11 看全部
目录
  • DataFrame.rename()
  • 多个行名和列名的修改
  • 原DataFrame的修改(参数inplace)
  • 使用lambda表达式和函数进行批处理
  • add_prefix(), add_suffix()
  • index和columns元素的更新pandas.DataFrame行名(index)和列名(columns)的修改方法如下。
    rename()
  • 任意的行名(index)和列名(columns)的修改
    add_prefix(), add_suffix()
  • 列名的接头词和结尾词的追加
    index和columns元素的更新
  • 行名和列名全部修改
    接下来,对每个方法进行说明。
    rename()
  • 多个行名和列名的修改
  • 原DataFrame的修改(参数inplace)
  • 使用lambda表达式和函数进行批处理
    add_prefix(), add_suffix()
    index和columns元素的更新
    首先,先生成一个DaraFrame。
    import pandas as pd
    df = pd.DataFrame({'A': [11, 21, 31],
                       'B': [12, 22, 32],
                       'C': [13, 23, 33]},
                      index=['ONE', 'TWO', 'THREE'])
    print(df)
    #         A   B   C
    # ONE    11  12  13
    # TWO    21  22  23
    # THREE  31  32  33
    DataFrame.rename()
    函数DataFrame.rename()可以对任意行和列的名称进行修改。
    DataFrame.rename()的参数有index和columns,使用"{旧值:新值}"字典的形式进行参数的指定。
    index为行,columns为列。只想修改某行或者某列的时候,只需要单独指定一个参数即可。
    修改后,返回一个新的DataFrame,原DataFrame并没有被修改。
    df_new = df.rename(columns={'A': 'a'}, index={'ONE': 'one'})
    print(df_new)
    #         a   B   C
    # one    11  12  13
    # TWO    21  22  23
    # THREE  31  32  33
    print(df)
    #         A   B   C
    # ONE    11  12  13
    # TWO    21  22  23
    # THREE  31  32  33
    多个行名和列名的修改
    多个行名和列名可以同时修改。只需要追加参数(字典的元素)。
    print(df.rename(columns={'A': 'a', 'C': 'c'}))
    #         a   B   c
    # ONE    11  12  13
    # TWO    21  22  23
    # THREE  31  32  33
    原DataFrame的修改(参数inplace)
    默认的设置为原DataFrame不变,返回一个新的DataFrame。
    当参数inplace为True时,原DataFrame将会被修改。返回值为None。
    df_org = df.copy()
    df_org.rename(columns={'A': 'a'}, index={'ONE': 'one'}, inplace=True)
    print(df_org)
    #         a   B   C
    # one    11  12  13
    # TWO    21  22  23
    # THREE  31  32  33
    使用lambda表达式和函数进行批处理
    rename()的参数index和columns值也可以指定为函数方法。
    比如,大小写的转换。
    print(df.rename(columns=str.lower, index=str.title))
    #         a   b   c
    # One    11  12  13
    # Two    21  22  23
    # Three  31  32  33
    lambda表达式-无名函数的指定。
    print(df.rename(columns=lambda s: s*3, index=lambda s: s + '!!'))
    #          AAA  BBB  CCC
    # ONE!!     11   12   13
    # TWO!!     21   22   23
    # THREE!!   31   32   33
    add_prefix(), add_suffix()
    列名的接头词和结尾词的追加方法。add_prefix()和add_suffix()。
    在方法的参数里指定接头词或者结尾词。
    print(df.add_prefix('X_'))
    #        X_A  X_B  X_C
    # ONE     11   12   13
    # TWO     21   22   23
    # THREE   31   32   33
    print(df.add_suffix('_X'))
    #        A_X  B_X  C_X
    # ONE     11   12   13
    # TWO     21   22   23
    # THREE   31   32   33
    add_prefix()和add_suffix()只能对列名(columns)进行修改。想要对行名进行修改的时候,可以参照上述lambda表达式的使用方法。

    index和columns元素的更新
    当想要对DataFrame里全部的元素修改或更新的时候,可以使用rename()方法的参数index,columns进行指定。
    可以在index,columns属性中指定List,tuple,pandas.Series等。
    df.index = [1, 2, 3]
    df.columns = ['a', 'b', 'c']
    print(df)
    #     a   b   c
    # 1  11  12  13
    # 2  21  22  23
    # 3  31  32  33
    此时,请注意,如果列表等的大小(元素数)与行数/列数不一致时,则会发生错误。
    # df.index = [1, 2, 3, 4]
    # ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements
    到此这篇关于Pandas.DataFrame的行名和列名的修改的文章就介绍到这了,更多相关Pandas.DataFrame行名和列名修改内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 23:47:56 | 显示全部楼层
    123456823 2023-6-28 23:47:56 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 03:06:01 | 显示全部楼层
    Gordon520 2023-6-29 03:06:01 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-6-29 15:02:12 | 显示全部楼层
    素色流年783 2023-6-29 15:02:12 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 15:41:39 | 显示全部楼层
    术数古籍专卖疤 2023-6-29 15:41:39 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-29 17:09:44 | 显示全部楼层
    123456825 2023-6-29 17:09:44 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    发表于 2023-6-29 20:44:02 | 显示全部楼层
    dxf17 2023-6-29 20:44:02 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 22:18:39 | 显示全部楼层
    风来时狂放 2023-6-29 22:18:39 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 00:16:57 | 显示全部楼层
    落败的青春阳落s 2023-6-30 00:16:57 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-6-30 02:51:53 | 显示全部楼层
    普通人物怨 2023-6-30 02:51:53 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表