Pandas.DataFrame的行名和列名如何修改

其他教程   发布日期:2023年06月27日   浏览次数:471

本文小编为大家详细介绍“Pandas.DataFrame的行名和列名如何修改”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pandas.DataFrame的行名和列名如何修改”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    pandas.DataFrame行名(index)和列名(columns)的修改方法如下

    rename()

    • 任意的行名(index)和列名(columns)的修改

    add_prefix(), add_suffix()

    • 列名的接头词和结尾词的追加

    index和columns元素的更新

    • 行名和列名全部修改

    接下来,对每个方法进行说明。

    rename()

    • 多个行名和列名的修改

    • 原DataFrame的修改(参数inplace)

    • 使用lambda表达式和函数进行批处理

    add_prefix(), add_suffix()

    index和columns元素的更新

    首先,先生成一个DaraFrame。

    1. import pandas as pd
    2. df = pd.DataFrame({'A': [11, 21, 31],
    3. 'B': [12, 22, 32],
    4. 'C': [13, 23, 33]},
    5. index=['ONE', 'TWO', 'THREE'])
    6. print(df)
    7. # A B C
    8. # ONE 11 12 13
    9. # TWO 21 22 23
    10. # THREE 31 32 33

    DataFrame.rename()

    函数DataFrame.rename()可以对任意行和列的名称进行修改。
    DataFrame.rename()的参数有index和columns,使用"{旧值:新值}"字典的形式进行参数的指定。

    index为行,columns为列。只想修改某行或者某列的时候,只需要单独指定一个参数即可。

    修改后,返回一个新的DataFrame,原DataFrame并没有被修改。

    1. df_new = df.rename(columns={'A': 'a'}, index={'ONE': 'one'})
    2. print(df_new)
    3. # a B C
    4. # one 11 12 13
    5. # TWO 21 22 23
    6. # THREE 31 32 33
    7. print(df)
    8. # A B C
    9. # ONE 11 12 13
    10. # TWO 21 22 23
    11. # THREE 31 32 33

    多个行名和列名的修改

    多个行名和列名可以同时修改。只需要追加参数(字典的元素)。

    1. print(df.rename(columns={'A': 'a', 'C': 'c'}))
    2. # a B c
    3. # ONE 11 12 13
    4. # TWO 21 22 23
    5. # THREE 31 32 33

    原DataFrame的修改(参数inplace)

    默认的设置为原DataFrame不变,返回一个新的DataFrame。

    当参数inplace为True时,原DataFrame将会被修改。返回值为None。

    1. df_org = df.copy()
    2. df_org.rename(columns={'A': 'a'}, index={'ONE': 'one'}, inplace=True)
    3. print(df_org)
    4. # a B C
    5. # one 11 12 13
    6. # TWO 21 22 23
    7. # THREE 31 32 33

    使用lambda表达式和函数进行批处理

    rename()的参数index和columns值也可以指定为函数方法。

    比如,大小写的转换。

    1. print(df.rename(columns=str.lower, index=str.title))
    2. # a b c
    3. # One 11 12 13
    4. # Two 21 22 23
    5. # Three 31 32 33

    lambda表达式-无名函数的指定。

    1. print(df.rename(columns=lambda s: s*3, index=lambda s: s + '!!'))
    2. # AAA BBB CCC
    3. # ONE!! 11 12 13
    4. # TWO!! 21 22 23
    5. # THREE!! 31 32 33

    add_prefix(), add_suffix()

    列名的接头词和结尾词的追加方法。add_prefix()和add_suffix()。

    在方法的参数里指定接头词或者结尾词。

    1. print(df.add_prefix('X_'))
    2. # X_A X_B X_C
    3. # ONE 11 12 13
    4. # TWO 21 22 23
    5. # THREE 31 32 33
    6. print(df.add_suffix('_X'))
    7. # A_X B_X C_X
    8. # ONE 11 12 13
    9. # TWO 21 22 23
    10. # THREE 31 32 33

    add_prefix()和add_suffix()只能对列名(columns)进行修改。想要对行名进行修改的时候,可以参照上述lambda表达式的使用方法。

    index和columns元素的更新

    当想要对DataFrame里全部的元素修改或更新的时候,可以使用rename()方法的参数index,columns进行指定。

    可以在index,columns属性中指定List,tuple,pandas.Series等。

    1. df.index = [1, 2, 3]
    2. df.columns = ['a', 'b', 'c']
    3. print(df)
    4. # a b c
    5. # 1 11 12 13
    6. # 2 21 22 23
    7. # 3 31 32 33

    此时,请注意,如果列表等的大小(元素数)与行数/列数不一致时,则会发生错误。

    1. # df.index = [1, 2, 3, 4]
    2. # ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements

    以上就是Pandas.DataFrame的行名和列名如何修改的详细内容,更多关于Pandas.DataFrame的行名和列名如何修改的资料请关注九品源码其它相关文章!