gpt4 book ai didi

python - 如何替换列中的重复值以使其基于 Pandas 中的另一列是唯一的?

转载 作者:行者123 更新时间:2023-12-04 01:16:49 25 4
gpt4 key购买 nike

如果列重复并且另一个列值重复,我试图使列唯一。在这个数据集中。

    Name    Age
0 Tom 20
1 Tom 20
2 Jack 19
3 Terry 18
4 Terry 20

我想让 Tom 和 Terry 一样,Terry_1 和 Terry_2 等等,如果我们有 1 个以上的 terry 并且年龄不匹配的话。我尝试了下面的代码。

import pandas as pd
import numpy as np
data = {'Name':['Tom', 'Tom', 'Jack', 'Terry','Terry'], 'Age':[20, 20, 19, 18,20]}
df = pd.DataFrame(data)
df.Name=df.Name+df.groupby(['Name','Age']).cumcount().astype(str)

我得到的是:

Name    Age
0 Tom0 20
1 Tom1 20
2 Jack0 19
3 Terry0 18
4 Terry0 20

我想要的是:

Name    Age
0 Tom 20
1 Tom 20
2 Jack 19
3 Terry_1 18
4 Terry_2 20

由于 Tom 的年龄相同,所以我们知道我们有相同的 Tom,但 Terry 因年龄不同而不同。

谢谢,山姆

最佳答案

这可以通过transformfactorize来完成,然后我们只需要通过nunique掩码

s=df.groupby('Name').Age
df['New']=(df.Name+'_'+s.transform(lambda x : (x.factorize()[0]+1)).astype(str)).\
mask(s.transform('nunique')==1,df.Name)
df
Out[230]:
Name Age New
0 Tom 20 Tom
1 Tom 20 Tom
2 Jack 19 Jack
3 Terry 18 Terry_1
4 Terry 20 Terry_2

关于python - 如何替换列中的重复值以使其基于 Pandas 中的另一列是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63222383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com