我有以下数据框:
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
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的列,其指定基于列是否唯一的标识符Lat,Lon并且Area具有相同的价值观。例如,在这种情况下,行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
Run Code Online (Sandbox Code Playgroud)
我会groupby.ngroup设置sort=False分组并str.cat连接State设置分隔符:
df['Sate'] = (df.groupby(['Lat','Lon','Area'], sort=False)
.ngroup()
.astype(str)
.str.cat(df.State, sep='_'))
Run Code Online (Sandbox Code Playgroud)
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
?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |