<small id='Gtluh'></small><noframes id='Gtluh'>

  1. <tfoot id='Gtluh'></tfoot>
  2. <legend id='Gtluh'><style id='Gtluh'><dir id='Gtluh'><q id='Gtluh'></q></dir></style></legend>

    1. <i id='Gtluh'><tr id='Gtluh'><dt id='Gtluh'><q id='Gtluh'><span id='Gtluh'><b id='Gtluh'><form id='Gtluh'><ins id='Gtluh'></ins><ul id='Gtluh'></ul><sub id='Gtluh'></sub></form><legend id='Gtluh'></legend><bdo id='Gtluh'><pre id='Gtluh'><center id='Gtluh'></center></pre></bdo></b><th id='Gtluh'></th></span></q></dt></tr></i><div id='Gtluh'><tfoot id='Gtluh'></tfoot><dl id='Gtluh'><fieldset id='Gtluh'></fieldset></dl></div>
        <bdo id='Gtluh'></bdo><ul id='Gtluh'></ul>
    2. 如何在超大DF中根据姓名有效地为具有多个条目的个人分配唯一ID

      时间:2024-04-20

        <tbody id='YrSNU'></tbody>

      <small id='YrSNU'></small><noframes id='YrSNU'>

        <bdo id='YrSNU'></bdo><ul id='YrSNU'></ul>
        • <legend id='YrSNU'><style id='YrSNU'><dir id='YrSNU'><q id='YrSNU'></q></dir></style></legend>

              <i id='YrSNU'><tr id='YrSNU'><dt id='YrSNU'><q id='YrSNU'><span id='YrSNU'><b id='YrSNU'><form id='YrSNU'><ins id='YrSNU'></ins><ul id='YrSNU'></ul><sub id='YrSNU'></sub></form><legend id='YrSNU'></legend><bdo id='YrSNU'><pre id='YrSNU'><center id='YrSNU'></center></pre></bdo></b><th id='YrSNU'></th></span></q></dt></tr></i><div id='YrSNU'><tfoot id='YrSNU'></tfoot><dl id='YrSNU'><fieldset id='YrSNU'></fieldset></dl></div>

              1. <tfoot id='YrSNU'></tfoot>
              2. 本文介绍了如何在超大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
                

                因此,基本上我希望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
                

                我遇到的问题是DataFrame大约有900万个条目,所以使用该循环将花费大量时间来运行。有没有人能想出一种更有效的方法来做这件事呢?我一直在考虑将Groupby和多索引作为潜在的解决方案,但还没有完全找到合适的解决方案。

                推荐答案

                您可以连接姓氏和名字,将其转换为类别,然后获取代码。

                当然,多个同名人员具有相同的id

                df = df.assign(id=(df['LastName'] + '_' + df['FirstName']).astype('category').cat.codes)
                >>> df
                  FirstName  LastName  id
                0       Tom     Jones   0
                1       Tom     Jones   0
                2     David     Smith   1
                3      Alex  Thompson   2
                4      Alex  Thompson   2
                

                这篇关于如何在超大DF中根据姓名有效地为具有多个条目的个人分配唯一ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:Python中的随机性.sample()方法有什么作用? 下一篇:PySpark-从值列表中添加列

                相关文章

                <tfoot id='5hGlX'></tfoot>
                1. <legend id='5hGlX'><style id='5hGlX'><dir id='5hGlX'><q id='5hGlX'></q></dir></style></legend>
                  <i id='5hGlX'><tr id='5hGlX'><dt id='5hGlX'><q id='5hGlX'><span id='5hGlX'><b id='5hGlX'><form id='5hGlX'><ins id='5hGlX'></ins><ul id='5hGlX'></ul><sub id='5hGlX'></sub></form><legend id='5hGlX'></legend><bdo id='5hGlX'><pre id='5hGlX'><center id='5hGlX'></center></pre></bdo></b><th id='5hGlX'></th></span></q></dt></tr></i><div id='5hGlX'><tfoot id='5hGlX'></tfoot><dl id='5hGlX'><fieldset id='5hGlX'></fieldset></dl></div>
                  • <bdo id='5hGlX'></bdo><ul id='5hGlX'></ul>

                  <small id='5hGlX'></small><noframes id='5hGlX'>