我将电子表格提取到一个名为df的Python数据框中。
让我们举个例子:

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

当我运行df.columns.is_unique时,我得到False
我想自动将列“a”重命名为“a 2”(或类似的名称)
我不期望像df.columns=['a','a_2']
我在寻找一个解决方案,可以用于几个列!

最佳答案

可以手动取消对列的验证:

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']

10-08 05:02