1.输入:我们有一个数据框
ID name
1 a
1 b
1 a
2 c
3 d
2.现在我想获取每个“ID”值的所有唯一“名称”值预期结果:
ID name
1 a
1 b
2 c
3 d
我尝试的代码只获得了 name 的第一个值,但我也希望每个 ID 都有它:
df.loc[~df.duplicated(keep='first', subset=['name'])]
我的代码应该如何根据我的需要更改?
答案 0 :(得分:0)
你可以试试这个
df.drop_duplicates(subset='name', keep="last")
或
df.sort_values('name', ascending=False).drop_duplicates('ID').sort_index()
基于多列删除重复项:
df = df.drop_duplicates(['col_name1','col_name2','col_name3'], keep='last')
答案 1 :(得分:0)
您也可以使用简单的 groupby
轻松完成此操作 -
>>> import pandas as pd
>>> d = {'ID':[1,1,1,2,3],'name':['a','b','a','c','d']}
>>>
>>>
>>>
>>> df = pd.DataFrame(d)
>>>
>>> df.groupby(['ID','name']).size().reset_index().drop(columns={0})
ID name
0 1 a
1 1 b
2 2 c
3 3 d