从两个字符串列pandas数据框看起来像:
d = {'SCHOOL' : ['Yale', 'Yale', 'LBS', 'Harvard','UCLA', 'Harvard', 'HEC'],
'NAME' : ['John', 'Marc', 'Alex', 'Will', 'Will','Miller', 'Tom']}
df = pd.DataFrame(d)
请注意,NAME与SCHOOL之间的关系是n到1。 我希望得到最后一所学校,以防一个人去过两所不同的学校(见“Will”案例)。
到目前为止,我得到了:
df = df.groupby('NAME')['SCHOOL'].unique().reset_index()
返回:
NAME SCHOOL
0 Alex [LBS]
1 John [Yale]
2 Marc [Yale]
3 Miller [Harvard]
4 Tom [HEC]
5 Will [Harvard, UCLA]
问题:
答案 0 :(得分:1)
基于@IanS评论解决的两个问题。
使用last()
代替unique()
:
df = df.groupby('NAME')['SCHOOL'].last().reset_index()
返回:
NAME SCHOOL
0 Alex LBS
1 John Yale
2 Marc Yale
3 Miller Harvard
4 Tom HEC
5 Will UCLA
答案 1 :(得分:1)
将I found this link for determining that a webpage is using angular与参数last
一起使用,并指定检查重复项的列:
df = df.drop_duplicates('NAME', keep='last')
print (df)
NAME SCHOOL
0 John Yale
1 Marc Yale
2 Alex LBS
4 Will UCLA
5 Miller Harvard
6 Tom HEC
如果需要排序,请添加drop_duplicates
:
df = df.drop_duplicates('NAME', keep='last').sort_values('NAME')
print (df)
NAME SCHOOL
2 Alex LBS
0 John Yale
1 Marc Yale
5 Miller Harvard
6 Tom HEC
4 Will UCLA