首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataFrame.set_index()复制行

DataFrame.set_index()复制行
EN

Stack Overflow用户
提问于 2022-08-03 22:49:02
回答 1查看 149关注 0票数 0

我这一天都在为这事抗争。经过大量的调试,我了解到在我的熊猫set_index() DataFrame中的一个调用是对

代码语言:javascript
复制
FutureWarning: reindexing with a non-unique Index is deprecated and will raise in a future version.

我收到警告了。我一直使用set_index(),不明白这是如何创建重复的。这是我的调试过程(我知道很难看):

代码语言:javascript
复制
ims = xml_to_df(os.environ["CUMULUS_XML"])
print(ims.duplicated(subset="Record Name").value_counts())

ims = format_data(ims)
print(ims.duplicated(subset="Document ID").value_counts())

ims.set_index("Document ID", inplace=True)
print(ims.duplicated().value_counts())
print(pd.DataFrame(ims.index.duplicated()).value_counts())

这是输出:

代码语言:javascript
复制
False    3996
True        1
dtype: int64

False    3996
True        1
dtype: int64

False    3608
True      389
dtype: int64

False    3996
True        1
dtype: int64

这怎么可能呢?(在format_data中,记录名被重命名为文档ID,因此我测试的是不同的子集)。注意,在最后的DF中,重复行的数量大于重复索引的数量。

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 14:44:54

好吧,我知道发生了什么。duplicated()只检查列值,它不关心索引。所以我有很多行(389行),尽管它们有一个唯一的标识符,但在所有列中都有相同的值。单个重复标识符(第一次检查中的一个True值)具有不同的列值,因此它甚至可以在drop_duplicates()调用中存活下来。一旦Document ID成为索引,duplicated()就开始挑选每一行具有相同值的行,尽管它们的索引是不同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73228606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档