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

Python 如何处理具有不同值的相同列标题,python,python-3.x,pandas,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

我有以下数据:

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.columns[2]:'Stock2'})
rename(columns={df.columns[3]:'Stock3'})
但这是行不通的


请提供帮助。

您尝试过df.columns=['Stock1'、'Stock2'、'Stock3']吗?

几个失败点

  • pandas.DataFrame.rename方法返回一个副本。您需要将其重新分配回名称
    df
  • 你应该用一本字典
  • 这是行不通的,因为有三列名称相同
  • 我必须假设你的问题的一般形式。首先,我将把您的数据框拆分为包含
    'stock'
    的列和不包含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)
    

    我不喜欢这样做的原因是,如果源文件将第一列更改为最后一列,它仍然按照相同的顺序命名该列。当重命名列确保该列的位置在哪里时,它会被正确重命名。拆分后,您建议如何实现结果??df_new是第二行代码中的结果(df_other=df.drop('stock',axis=1)),它会抛出一个错误,说:Expected Tuple,有一个string@zsh_18明天我得去看看。不用担心。非常感谢