我这一天都在为这事抗争。经过大量的调试,我了解到在我的熊猫set_index() DataFrame中的一个调用是对
FutureWarning: reindexing with a non-unique Index is deprecated and will raise in a future version.我收到警告了。我一直使用set_index(),不明白这是如何创建重复的。这是我的调试过程(我知道很难看):
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())这是输出:
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中,重复行的数量大于重复索引的数量。
发布于 2022-08-04 14:44:54
好吧,我知道发生了什么。duplicated()只检查列值,它不关心索引。所以我有很多行(389行),尽管它们有一个唯一的标识符,但在所有列中都有相同的值。单个重复标识符(第一次检查中的一个True值)具有不同的列值,因此它甚至可以在drop_duplicates()调用中存活下来。一旦Document ID成为索引,duplicated()就开始挑选每一行具有相同值的行,尽管它们的索引是不同的。
https://stackoverflow.com/questions/73228606
复制相似问题