获取每个不同列值的所有唯一值

时间:2021-06-30 05:01:22

标签: python dataframe dictionary

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'])]

我的代码应该如何根据我的需要更改?

2 个答案:

答案 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