这是一个复杂的问题,我不能弄清楚这一点,我真的很感谢你在这方面的帮助。
以下 Dataframe 由panda函数DataFrame.duplicated()
生成,基于“位置”(groupby)和“类别”,重复记录相应标记为真/假。
Number Loc Category Date IsDuplicate
-----------------------------------------------------
1 A jetski 01/01/2020 False
2 A kayak 01/02/2020 False
3 A jetski,kayak 01/04/2020 False
4 B jetski 01/05/2020 False
5 B jetski 01/07/2020 True
6 C kayak 01/08/2020 False
7 C kayak 01/09/2020 True
8 C jetski 01/10/2020 False
我的期望是根据'Loc'(groupby)、'Category'和'IsDuplicate'建立另一个数据行,以便只表示实际重复的值。只有False数据才应该标示为'不适用'
积分:
1.按地点分组
1.对于任何位置:
a.如果'IsDuplicate' == True,则匹配'category'列,并仅返回匹配行(True/False)
b.如果发现任何其他仅为假记录,则返回'不适用'
1.对于位置中任何只有False的值,返回“不适用”
预期输出:
Number Loc Category Date IsDuplicate Only_Dupes
---------------------------------------------------------------------
1 A jetski 01/01/2020 False Not Applicable
2 A kayak 01/02/2020 False Not Applicable
3 A jetski,kayak 01/04/2020 False Not Applicable
4 B jetski 01/05/2020 False False
5 B jetski 01/07/2020 True True
6 C kayak 01/08/2020 False False
7 C kayak 01/09/2020 True True
8 C jetski 01/10/2020 False Not Applicable
如果需要进一步的澄清,请告诉我。我感谢你的所有协助。
1条答案
按热度按时间jogvjijk1#
您可以尝试创建两个条件,一个用于检查重复项,另一个用于获取按位置和类别分组的列类别的出现次数,然后使用
np.where
指定duplicated()
的结果,其中count大于1,否则为Not Applicable
或类似的逻辑,但在转换中链接它们:
第一次