python - 根据列组合在数据框中创建唯一标识符

标签 python pandas

我有以下数据框:

    id  Lat         Lon         Year    Area    State
50319   -36.0629    -62.3423    2019    90  Iowa
18873   -36.0629    -62.3423    2017    90  Iowa
18876   -36.0754    -62.327     2017    124 Illinois
18878   -36.0688    -62.3353    2017    138 Kansas

我想创建一个新列,该列根据列 Lat 是否分配唯一标识符, LonArea具有相同的值。例如。在这种情况下,第 1 行和第 2 行在这些列中具有相同的值,并且将被赋予相同的唯一标识符 0_Iowa哪里Iowa来自 State柱子。我尝试使用 for 循环,但有没有更 Pythonic 的方法来做到这一点?
id       Lat         Lon       Year    Area State   unique_id
50319   -36.0629    -62.3423    2019    90  Iowa    0_Iowa
18873   -36.0629    -62.3423    2017    90  Iowa    0_Iowa
18876   -36.0754    -62.327     2017    124 Illinois    1_Illinois
18878   -36.0688    -62.3353    2017    138 Kansas  2_Kansas

最佳答案

我会去 groupby.ngroup 设置 sort=False用于分组和 str.cat State 连接设置分隔符:

df['Sate'] = (df.groupby(['Lat','Lon','Area'], sort=False)
                .ngroup() 
                .astype(str)
                .str.cat(df.State, sep='_'))
print(df)

      id      Lat      Lon  Year  Area     State        Sate
0  50319 -36.0629 -62.3423  2019    90      Iowa      0_Iowa
1  18873 -36.0629 -62.3423  2017    90      Iowa      0_Iowa
2  18876 -36.0754 -62.3270  2017   124  Illinois  1_Illinois
3  18878 -36.0688 -62.3353  2017   138    Kansas    2_Kansas
1
​

关于python - 根据列组合在数据框中创建唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62396518/

相关文章:

python: 'dict' 对象没有属性 'has_key'

python - 如何在抓取的 Pandas 数据框中的所有列上使用 `str.replace()` 方法?

python - jupyter 笔记本 vs jupyter 控制台 : display of markdown (and latex, html 等)对象

python - 无论如何,在退出时关闭sqlite3数据库

python - 标准化/缩放作为 python 中的预处理步骤

python - 合并相似列上的两个数据框

python - 空间和训练数据中的 Cased VS uncased BERT 模型

python - 如何根据位于一个目录中的不同文件绘制不同的子图?

python - 如何将数值与 nan 值分开?

python - 应用if语句替换 'Column Y'中不同行对应的 'Column X'中的数据