Python Pandas多个groupby和filter
我有这个数据框:Python Pandas多个groupby和filter,python,pandas,Python,Pandas,我有这个数据框: df = pd.DataFrame(np.array([ [1, 'Black', 233, 342], [1, 'White', 342, 1222], [1, 'Orange', 432, 1234], [1, 'Orange', 2234, 1345], [1, 'Orange', 2234, 1345], [2, 'Pink', 444, 222], [2,
df = pd.DataFrame(np.array([
[1, 'Black', 233, 342],
[1, 'White', 342, 1222],
[1, 'Orange', 432, 1234],
[1, 'Orange', 2234, 1345],
[1, 'Orange', 2234, 1345],
[2, 'Pink', 444, 222],
[2, 'White', 35345, 2345434],
[3, 'Black', 4544, 2222],
[4, 'White', 4433, 123],
[4, 'White', 4433, 123],
[4, 'White', 4433, 123],
[4, 'White', 4433, 123],
[4, 'White', 4433, 123],
[4, 'White', 4433, 123],
]), columns=['ID', 'TITLE', 'ITEM_ID', 'CARD_ID'])
ID标题项目\u ID卡\u ID
01黑色233342
1 1白色342 1222
2 1橙色432 1234
3 1橙色2234 1345
4 1橙色2234 1345
5 2粉红色444 222
6 2白色35345 2345434
7 3黑色45442222
8 4白色4433 123
9 4白色4433 123
10 4白色4433 123
11 4白色4433 123
12 4白色4433 123
13 4白色4433 123
我只想获取具有相同ID但不同标题的行(当标题超过一个时,当然要删除重复标题):
ID标题项目\u ID卡\u ID
01黑色233342
1 1白色342 1222
2 1橙色432 1234
5 2粉红色444 222
6 2白色35345 2345434
请帮帮我。按
ID
分组,删除标题中唯一值计数为1的行;之后,您可以删除重复项
(df.loc[df.groupby("ID")
.TITLE
.transform("nunique")
.gt(1)]
.drop_duplicates(["ID", "TITLE"])
)
ID TITLE ITEM_ID CARD_ID
0 1 Black 233 342
1 1 White 342 1222
2 1 Orange 432 1234
5 2 Pink 444 222
6 2 White 35345 2345434
ID TITLE ITEM_ID CARD_ID
0 1 Black 233 342
1 1 White 342 1222
2 1 Orange 432 1234
5 2 Pink 444 222
6 2 White 35345 2345434
(df.loc[df.groupby("ID")
.TITLE
.transform("nunique")
.gt(1)]
.drop_duplicates(["ID", "TITLE"])
)
ID TITLE ITEM_ID CARD_ID
0 1 Black 233 342
1 1 White 342 1222
2 1 Orange 432 1234
5 2 Pink 444 222
6 2 White 35345 2345434