小编Sim*_*arp的帖子

问:[Pandas]如何根据非常大的df中的名称有效地为具有多个条目的个人分配唯一ID

我想采用一组不同的独特个体的数据集,每个人都有多个条目,并为每个人分配一个唯一的ID来表示他们所有的条目.这是df的一个例子:

      FirstName LastName  id
0     Tom       Jones     1
1     Tom       Jones     1
2     David     Smith     1
3     Alex      Thompson  1
4     Alex      Thompson  1
Run Code Online (Sandbox Code Playgroud)

所以,基本上我希望Tom Jones的所有条目都有id = 1,David Smith的所有条目都有id = 2,Alex Thompson的所有条目都有id = 3,依此类推.

所以我已经有了一个解决方案,这是一个死的简单python循环迭代两个值(一个用于id,一个用于索引),并根据它们是否与前一个人匹配来为个人分配一个id:

x = 1
i = 1

while i < len(df_test):
    if (df_test.LastName[i] == df_test.LastName[i-1]) & 
    (df_test.FirstName[i] == df_test.FirstName[i-1]):
        df_test.loc[i, 'id'] = x
        i = i+1
    else:
        x = x+1
        df_test.loc[i, 'id'] = x
        i = i+1
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是数据框有大约900万个条目,因此使用该循环会花费大量的时间来运行.谁能想到更有效的方法呢?我一直在寻找groupby和multiindexing作为潜在的解决方案,但尚未找到合适的解决方案.谢谢!

python indexing dataframe pandas

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

dataframe ×1

indexing ×1

pandas ×1

python ×1