本文小编为大家详细介绍“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。
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  33DataFrame.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  33lambda表达式-无名函数的指定。
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   33add_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   33add_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