我有这个DataFrame:
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 TITLE ITEM_ID CARD_ID 0 1 Black 233 342 1 1 White 342 1222 2 1 Orange 432 1234 3 1 Orange 2234 1345 4 1 Orange 2234 1345 5 2 Pink 444 222 6 2 White 35345 2345434 7 3 Black 4544 2222 8 4 White 4433 123 9 4 White 4433 123 10 4 White 4433 123 11 4 White 4433 123 12 4 White 4433 123 13 4 White 4433 123
我只想获取具有相同ID但不同TITLE的行(当TITLE当然超过一个,并删除重复的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
请帮帮我。
答案 0 :(得分:1)
按ID
分组,删除TITLE中唯一值计数为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