Pandas.DataFrame的行名和列名的修改 |
您所在的位置:网站首页 › pythonupdate和add › Pandas.DataFrame的行名和列名的修改 |
目录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 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 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 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 赞 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |