Python 如何根据其他列中的值从数据帧中查找重复项?
我有一只熊猫-Python 如何根据其他列中的值从数据帧中查找重复项?,python,pandas,python-2.7,dataframe,Python,Pandas,Python 2.7,Dataframe,我有一只熊猫- A= [period store item 1 32 'A' 1 34 'A' 1 32 'B' 1 34 'B' 2 42 'X' 2 44 'X' 2 42 'Y' 2 44 'Y'] 我需要实现如下内容: 如果某个项目在该特定期间与任何其他项目具有相同的存储集,则这些项目是重复的。 因此,在这种
A=
[period store item
1 32 'A'
1 34 'A'
1 32 'B'
1 34 'B'
2 42 'X'
2 44 'X'
2 42 'Y'
2 44 'Y']
我需要实现如下内容:
如果某个项目在该特定期间与任何其他项目具有相同的存储集,则这些项目是重复的。
因此,在这种情况下,A和B是重复的,因为它们在各自的时间段具有相同的存储
我已尝试使用以下方法将其转换为嵌套字典:
dicta = {p: g.groupby('items')['store'].apply(tuple).to_dict()
for p, g in mkt.groupby('period')}
还给我一本这样的字典:
dicta = {1: {'A': (32, 34),'B': (32, 34)}, 2: {'X': (42, 44),'Y': (42, 44)}}
。。。
所以最后我想要一本这样的字典
{1:(A,B),2:(X,Y)}
虽然,我无法找到任何逻辑如何找到重复的项目。
有没有其他方法可以找到那些重复的项目,你可以简单地使用。确保将['period','store']
作为子集
传递,并将保留
作为假
传递,以便返回所有行
print(A[A.duplicated(subset=['period', 'store'], keep=False)])
输出
period store item
0 1 32 A
1 1 34 A
2 1 32 B
3 1 34 B
4 2 42 X
5 2 44 X
6 2 42 Y
7 2 44 Y
请注意,根据您指定的逻辑,所有行都是重复的
编辑在详细说明预期格式后,我建议
duplicates = A[A.duplicated(subset=['period', 'store'], keep=False)]
output = {g: tuple(df['item'].unique()) for g, df in duplicates.groupby('period')}
然后
output
是{1:('A','B'),2:('X','Y')}
你好,谢谢你的快速帮助,但我真正需要的是这样的东西。。。1=(A,B),2=(A,B),其中1和2为期间,A,B为该期间的重复项,且具有相同的存储集。我知道我问了很多问题,但这真的很紧急,考虑到我在这方面的知识有限,我必须寻求帮助。@Bigshaikh那么这与你在问题中已经得到的dicta
有什么不同呢?那本字典没有给我与句点ID对应的项目duplicates@thebigshaikh是的。外键是1
和2
字典刚刚给了我这个,dicta={1:{'A':(32,34),'B':(32,34)},2:{'X':(42,44),'Y':(42,44)},而我需要这样的东西{1:(A,B),2:(X,Y)},这里1和2是句点,A,B,X,Y是存储集完全相同的项。字典只是原始数据帧以不同形式的表示