【发布时间】:2018-03-30 03:17:18
【问题描述】:
来自两个字符串列的 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]
问题:
- unique() 不仅返回最后一所学校,还返回两所学校。
- 此行将 SCHOOL 列作为 np.array 而不是字符串返回。很难用这个 df 进一步工作。
【问题讨论】:
-
试试
last而不是unique。 -
感谢@IanS!这可以摆脱所有学校的 np.array ,但遗嘱的学校。对此有什么想法吗?
-
我的错...我没有重新定义
df变量。last()完美运行。谢啦!!我是 python 的新手,如果你不介意你能解释一下为什么last()有效吗? (Pandas 文档对我帮助不大……) -
非常感谢!我会用你的评论来回答这个问题。
标签: python pandas numpy group-by unique