代码之家  ›  专栏  ›  技术社区  ›  DeltaIV

重命名数据帧的所有列,删除最后一个斜杠之前的所有字符(如果有的话)

  •  1
  • DeltaIV  · 技术社区  · 3 年前

    我有一个数据帧,其中有些,但是 不 所有列都以奇怪的前缀开头。例如 ot1/pr1/cp1/dkjsakhka , gt2/pr1/fl1/ct4/rmt12/dasljdals ,等等。我想通过删除最后一个斜杠之前的所有字符来重命名名称中有斜杠的所有列,例如。 ot1/pr1/cp1/dkjsakhka -> dkjsakhka , gt2/pr1/fl1/ct4/rmt12/dasljdals -> dasljdals ,同时保持其他列名不变。我该怎么做?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Corralien    3 年前

    您可以使用 str.rsplit :

    df.columns = df.columns.str.rsplit('/', n=1).str[-1]
    

    输出:

    # before
    >>> df.columns
    Index(['untouched column', 'ot1/pr1/cp1/dkjsakhka',
           'gt2/pr1/fl1/ct4/rmt12/dasljdals'],
          dtype='object')
    
    # after
    >>> df.columns
    Index(['untouched column', 'dkjsakhka', 'dasljdals'], dtype='object')
    

    编辑:

    您也可以使用 rename 如果您愿意:

    df = df.rename(lambda x: x.rsplit('/', maxsplit=1)[-1], axis=1)
    
    推荐文章