在pandas数据框架中查找重复列名的本地方法?



我有一个从表中获取xml链接并将其解析为字典的代码,该字典成为数据框,它们的嵌套字典也成为数据框,两者都被连接起来,等等。我试图使代码仔细解析每个新的列名与唯一的名称,但也许我做了一个监督的地方,可能有重复的列名在某个地方,这可能会阻止一个最终的pd.concat()方法从加入我正在工作的数据框和新的我试图加入,所以我得到错误:pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects

我可以创建一个空列表,遍历列名,如果列名已经在列表中,就抛出错误,否则就把它附加到列表中,也许有本地方法能做到这一点?

编辑:我想在单个数据框中找到重复的列名。

要删除一个数据框中重复的列名称(如您在评论中所要求的),您可以使用.duplicated()方法。

像这样:

df = df.loc[:, ~df.columns.duplicated()]

duplicated()方法返回一个布尔数组,包含TrueFalse。因此,如果它是False,那么列名是唯一的,如果它是True,那么列名是重复的。例如,返回值为[False, False, True]True是重复的列名。

使用~你改变布尔值相反的,因此所有False变得True,等等。因此,您将只保留不重复的列。

如果你只是想检查是否有重复,你可以简单地使用any()方法:

any(df.columns.duplicated())

希望对你有帮助!

相关内容

最新更新