首先,你的方法是低效的,因为逐行附加到列表将是缓慢的,因为当新条目的空间不足时必须定期增加列表,在这方面列表推导更好,因为确定了大小前面并分配一次.
但是,我认为从根本上说你的方法有点浪费,因为你已经拥有了一个数据框,那么为什么要为每个用户创建一个新数据框?
我会按列’name’对数据帧进行排序,将索引设置为this,如果需要,不删除列.
然后生成所有唯一条目的列表,然后您可以使用这些条目执行查找,并且至关重要的是,如果您只查询数据,请使用选择标准返回数据框上的视图,而不会产生代价高昂的数据副本.
所以:
# sort the dataframe
df.sort(columns=['name'], inplace=True)
# set the index to be this and don't drop
df.set_index(keys=['name'], drop=False,inplace=True)
# get a list of names
names=df['name'].unique().tolist()
# now we can perform a lookup on a 'view' of the dataframe
joe = df.loc[df.name=='joe']
# now you can query all 'joes'
编辑
sort现已弃用,您现在需要使用sort_values:
# sort the dataframe
df.sort_values(by='name', axis=1, inplace=True)
# set the index to be this and don't drop
df.set_index(keys=['name'], drop=False,inplace=True)
# get a list of names
names=df['name'].unique().tolist()
# now we can perform a lookup on a 'view' of the dataframe
joe = df.loc[df.name=='joe']
# now you can query all 'joes'