【问题标题】:How do I use df.add_suffix to add suffixes to duplicate column names in Pandas?如何使用 df.add_suffix 为 Pandas 中的重复列名添加后缀?
【发布时间】:2021-03-30 12:02:18
【问题描述】:

我有一个包含 400 列的大型数据框。 200 个列名与前 200 个重复。如何使用 df.add_suffix 只为重复的列名添加后缀?

或者有更好的方法自动完成吗?

【问题讨论】:

    标签: pandas dataframe suffix


    【解决方案1】:

    如果我理解你的问题是正确的,你每个名字都有两次。如果是这样,可以使用df.columns.duplicated() 请求重复值。然后您可以创建一个仅修改重复值并添加您自定义的后缀的新列表。这与修改所有条目的其他已发布解决方案不同。

    df = pd.DataFrame(data=[[1, 2, 3, 4]], columns=list('aabb'))
    my_suffix = 'T'
    
    df.columns = [name if duplicated == False else name + my_suffix for duplicated, name in zip(df.columns.duplicated(), df.columns)]
    df
    >>>
       a  aT  b  bT
    0  1   2  3   4
    

    我的答案的缺点是,如果一个名称被使用三次或更多次,数据框可能具有重复的列名。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      import pandas as pd
      
      # setup dummy DataFrame with repeated columns
      df = pd.DataFrame(data=[[1, 2, 3]], columns=list('aaa'))
      
      # create unique identifier for each repeated column
      identifier = df.columns.to_series().groupby(level=0).transform('cumcount')
      
      # rename columns with the new identifiers
      df.columns = df.columns.astype('string') + identifier.astype('string')
      
      print(df)
      

      输出

         a0  a1  a2
      0   1   2   3
      

      如果只有一个重复的列,你可以这样做:

      # setup dummy DataFrame with repeated columns
      df = pd.DataFrame(data=[[1, 2, 3, 4]], columns=list('aabb'))
      
      # create unique identifier for each repeated column
      identifier = df.columns.duplicated().astype(int)
      
      # rename columns with the new identifiers
      df.columns = df.columns.astype('string') + identifier.astype(str)
      
      print(df)
      

      输出 (只有一个副本)

         a0  a1  b0  b1
      0   1   2   3   4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 2016-03-07
        • 2020-04-04
        • 2015-12-05
        • 2016-07-04
        • 1970-01-01
        相关资源
        最近更新 更多