解决pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects报错的问题

import pandas as pd
import numpy as np

'''2种方式,上面逐步理解'''

def q_01_01():
    '''解决列重复问题'''
    df1 = pd.DataFrame(np.random.randint(0, 5, (6, 5)), columns=list("abcde"))

    df3 = pd.DataFrame(np.random.randint(-10, 0, (3, 5)), columns=list("abcac"))

    print(df1, df3)
    # df1=df1.reset_index()
    # df3=df3.reset_index()
    df_list = [df1, df3]
    for t in df_list:
        print(t.columns)
        c_n = []
        for n, m in enumerate(t.columns):  # 当作列表遍历

            if t.columns.duplicated()[n]:  # 判断Serise的重复值,前面当作bool列表
                print(m + f'_{n}')
                print(t.columns.duplicated())
                c_n.append(m + f'_{n}')

            else:
                print(m)
                print(t.columns.duplicated())
                c_n.append(m)

        t.columns = c_n

    print(df1, df3)

    df_c13 = pd.concat([df1, df3], keys=["df1", "df3"])
    print(df_c13)


def q_01_02():
    '''解决列重复问题'''
    df1 = pd.DataFrame(np.random.randint(0, 5, (6, 5)), columns=list("abcde"))

    df3 = pd.DataFrame(np.random.randint(-10, 0, (3, 5)), columns=list("abcab"))

    print(df1, df3, sep='\n')
    # df1=df1.reset_index()
    # df3=df3.reset_index()
    df_list = [df1, df3]
    for t in df_list:
        print(t.columns)
        # 具体解释见上
        t.columns = [m + f'_{n}' if t.columns.duplicated()[n] else m for n, m in enumerate(t.columns)]

    print(df1, df3, sep='\n')

    df_c13 = pd.concat([df1, df3], keys=["df1", "df3"])
    print(df_c13)


if __name__ == '__main__':
    q_01_02()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值