Python Pandas:如何分组并为组中的所有项分配id?

2024-06-26 14:02:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有df:

domain           orgid
csyunshu.com    108299
dshu.com        108299
bbbdshu.com     108299
cwakwakmrg.com  121303
ckonkatsunet.com    121303

我想添加一个新列,用每个orgid的数字id替换域列:

domain           orgid   domainid
csyunshu.com    108299      1
dshu.com        108299      2
bbbdshu.com     108299      3
cwakwakmrg.com  121303      1
ckonkatsunet.com 121303     2

我已经试过这一行了,但它没有给出我想要的结果:

df.groupby('orgid').count['domain'].reset_index()

有人能帮忙吗?


Tags: comiddfdomaincount数字groupbydshu
2条回答

您可以使用sklearn.preprocessing中的LabelEncoder,例如:

df["domain"] = LabelEncoder().fit_transform(df.domain)

您可以对groupby对象调用rank,并传递参数method='first'

In [61]:
df['domainId'] = df.groupby('orgid')['orgid'].rank(method='first')
df

Out[61]:
             domain   orgid  domainId
0      csyunshu.com  108299         1
1          dshu.com  108299         2
2       bbbdshu.com  108299         3
3    cwakwakmrg.com  121303         1
4  ckonkatsunet.com  121303         2

如果要覆盖列,可以执行以下操作:

df['domain'] = df.groupby('orgid')['orgid'].rank(method='first')

相关问题 更多 >