[英]How to extract data from a pandas dataframe based upon values of other columns?
[英]How to find duplicates from a Pandas dataframe based upon the values in other columns?
我有一個熊貓Df-
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)}盡管,我無法找到任何邏輯來查找重復項。 有什么其他方法可以找到那些重復的項目
您可以簡單地使用.duplicated
。 確保將['period', 'store']
作為subset
傳遞並keep
為False
以便將所有行都返回。
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
請注意,根據您指定的邏輯,所有行都是重復的。
編輯 OP詳細闡述了預期的格式后,我建議
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')}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.