如果名称列条目在给定列表中有一个项,我想筛选pandas数据框。
这里有一个数据框
x = DataFrame(
[['sam', 328], ['ruby', 3213], ['jon', 121]],
columns=['name', 'score'])
现在假设我们有一个列表,['sam', 'ruby']
,我们希望找到列表中名称所在的所有行,然后求和得分。
我有如下解决方案:
total = 0
names = ['sam', 'ruby']
for name in names:
identified = x[x['name'] == name]
total = total + sum(identified['score'])
然而,当数据帧变得非常大,并且名称列表也变得非常大时,一切都非常缓慢。
还有更快的选择吗?
谢谢
如果我需要搜索一个字段,我注意到如果我将数据框的索引更改为搜索字段,这将非常有帮助。对于我的一项搜索和查找要求,我的性能提高了大约500%。
因此,在您的情况下,可以使用以下内容按名称进行搜索和筛选。
尝试使用isin(感谢DSM在这里建议使用
loc
而不是ix
):CT Zhu建议使用
np.in1d
更快的替代方法:相关问题 更多 >
编程相关推荐