如何处理具有不同值的相同列标题

时间:2020-02-25 03:26:55

标签: python python-3.x pandas

我有以下数据:

S.No   Department  stock stock  stock
1       Medicine        34  38  58
2       Pharma          23  39  71
3       ortho           76  12  81

我正在获取的源文件具有重复的列标题值为“ stock”,它实际上应该是“ Stock1”,“ Stock2”和“ Stock3”。 我不想手动而是通过编程来完成它。

我尝试过:

df.rename(columns  = {df.columns[1]: 'Stock1'})
df.rename(columns  = {df.columns[2]: 'Stock2'})
df.rename(columns  = {df.columns[3]: 'Stock3'})

但这不起作用。

请帮助。

2 个答案:

答案 0 :(得分:1)

几个故障点。

  1. pandas.DataFrame.rename方法返回一个副本。您需要将其重新分配回名称df
  2. 您应该使用一本字典
  3. 那是行不通的,因为您有三列名称相同的东西

我必须假设一些关于您问题的一般形式的事情。首先,我将您的数据框分为带有'stock'的列和不包含

的列
df_stock = df.filter(regex='^stock$')
df_other = df.drop('stock', axis=1)

df_stock.columns += list(map(str, range(1, df_stock.shape[1] + 1)))

df_new = df_other.join(df_stock)

答案 1 :(得分:0)

您是否尝试过df.columns = ['Stock1','Stock2','Stock3']?