【问题标题】:Change duplicate columns' names更改重复列的名称
【发布时间】:2020-02-26 06:14:20
【问题描述】:

我正在尝试更改数据框中一组重复列的列名。经过一堆预处理后,我从两个不同的 csv 文件中形成了数据框。

merged_df.columns是这个:

Index(['PortfolioID', 'FirmID', 'PC_City', 'PC_State', 'PC_Country',
   'Investment_Date', 'Exit_Date', 'Transaction_Comments', 'PC_City', 
   'PC_State', 'PC_Country',
   'fundSize'],
  dtype='object')

第一组PC_City, PC_State, PC_Country 用于投资组合公司,下一组用于公司。我尝试了this,但使两组相同。然后我看到了this,但只有在导入csv时才能做到。 This 不谈论重复。

有什么方法可以实现吗? 请模组帮忙编辑。

【问题讨论】:

  • 合并两个csv时添加第二级

标签: python pandas dataframe


【解决方案1】:

假设您想将_Firms 添加到列的重复值中

示例:

df.columns

Out[372]:
Index(['PortfolioID', 'FirmID', 'PC_City', 'PC_State', 'PC_Country',
       'Investment_Date', 'Exit_Date', 'Transaction_Comments', 'PC_City',
       'PC_State', 'PC_Country', 'fundSize'],
      dtype='object')

您可以将whereduplicated 一起使用,如下所示:

cols = df.columns
df.columns = cols.where(~cols.duplicated(), cols + '_Firms')

print(df.columns)

Out[380]:
Index(['PortfolioID', 'FirmID', 'PC_City', 'PC_State', 'PC_Country',
       'Investment_Date', 'Exit_Date', 'Transaction_Comments', 'PC_City_Firms',
       'PC_State_Firms', 'PC_Country_Firms', 'fundSize'],
      dtype='object')

【讨论】:

    【解决方案2】:

    您可以尝试在重复项上添加firm

    duplicates = merged_df.columns.duplicated()
    
    merged_df.columns = [x+'_firm' if i else x for x, i in zip(merged_df.columns, duplicates)]
    

    输出:

    Index(['PortfolioID', 'FirmID', 'PC_City', 'PC_State', 'PC_Country',
           'Investment_Date', 'Exit_Date', 'Transaction_Comments', 'PC_City_firm',
           'PC_State_firm', 'PC_Country_firm', 'fundSize'],
          dtype='object')
    

    但是,根据您的命名,您应该考虑将suffixes=('portfolio', 'firm') 传递给创建merged_dfmerge 函数。

    【讨论】:

    • 精彩回答我的老兄 +1
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2014-01-04
    • 2020-10-13
    • 1970-01-01
    • 2018-02-06
    • 2011-02-21
    • 2021-12-01
    • 2021-07-27
    相关资源
    最近更新 更多