自动重命名列以确保它们是唯一的

wor*_*ins 3 python pandas

我将电子表格提取到名为的Python DataFrame中df.

我们举个例子:

df=pd.DataFrame({'a': np.random.rand(10), 'b': np.random.rand(10)})
df.columns=['a','a']

          a         a
0  0.973858  0.036459
1  0.835112  0.947461
2  0.520322  0.593110
3  0.480624  0.047711
4  0.643448  0.104433
5  0.961639  0.840359
6  0.848124  0.437380
7  0.579651  0.257770
8  0.919173  0.785614
9  0.505613  0.362737
Run Code Online (Sandbox Code Playgroud)

当我跑步时,df.columns.is_unique我得到了False

我想自动将列'a'重命名为'a_2'(或类似的东西)

我不指望像这样的解决方案 df.columns=['a','a_2']

我正在寻找可用于多个列的解决方案!

Vee*_*rac 10

您可以手动统一列:

df_columns = ['a', 'b', 'a', 'a_2', 'a_2', 'a', 'a_2', 'a_2_2']

def uniquify(df_columns):
    seen = set()

    for item in df_columns:
        fudge = 1
        newitem = item

        while newitem in seen:
            fudge += 1
            newitem = "{}_{}".format(item, fudge)

        yield newitem
        seen.add(newitem)

list(uniquify(df_columns))
#>>> ['a', 'b', 'a_2', 'a_2_2', 'a_2_3', 'a_3', 'a_2_4', 'a_2_2_2']
Run Code Online (Sandbox Code Playgroud)