我正在尝试更改数据框中一组重复列的列名。经过一堆预处理后,我从两个不同的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
用于投资组合公司,下一组swagger-ui-dist
用于公司。我尝试了this,但将两个集合设为相同。然后我看到了this,但是只有在导入csv时才能完成。 This不会重复。
有什么办法可以实现? Mod,请帮助进行编辑。
答案 0 :(得分:1)
您可以尝试在重复项上添加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')
传递到创建merge
的{{1}}函数中。
答案 1 :(得分:0)
假设您要向列的重复值添加_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')
您可以将where
与duplicated
一起使用,如下所示:
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')