Python 将重复值转换为唯一值
列的重复值需要转换为唯一值 我有一个带有特定r*c的数据帧。我需要考虑一个列,它基本上是具有多个重复ID的ID列。需要将ID设置为唯一的。假设我有下面提到的df:Python 将重复值转换为唯一值,python,dataframe,Python,Dataframe,列的重复值需要转换为唯一值 我有一个带有特定r*c的数据帧。我需要考虑一个列,它基本上是具有多个重复ID的ID列。需要将ID设置为唯一的。假设我有下面提到的df: data = [['tom', 10], ['nick', 15], ['juli', 14], ['juli', 14], ['juli', 14]] df = pd.DataFrame(data, columns = ['Name', 'Age']) df Actual Result: Name Ag
data = [['tom', 10], ['nick', 15], ['juli', 14], ['juli', 14], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df
Actual Result:
Name Age
0 tom 10
1 nick 15
2 juli 14
3 juli 15
4 juli 16
Expected Result:
Name Age
0 tom 10
1 nick 15
2 juli_1 14
3 juli_2 15
4 juli_3 16
您可以将
窗口
-函数与秩函数结合使用来创建新的唯一ID。另请参阅以下帖子:如果您只需要唯一ID(名称
),您可以尝试以下操作:
data = [['tom', 10], ['nick', 15], ['juli', 14], ['juli', 14], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
suffix = df.groupby(df.Name)\
.cumcount()\
.astype(str)\
.str.replace('0', '')\
.values
df.Name = df.Name + suffix
输出:
Name Age
0 tom 10
1 nick 15
2 juli 14
3 juli1 14
4 juli2 14
试试这个:
data = [['tom', 10], ['nick', 15], ['juli', 14], ['juli', 14], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
suffix = df.groupby(df.Name)\
.cumcount()\
.astype(str)\
.str.replace('0', '')\
.values
df.Name = df.Name + suffix
from collections import Counter
keys = [x[0] for x in data]
duplicates = [key for key,value in Counter(keys).items() if value>1]
for i in range(len(duplicates)):
index = 0
for j in range(len(data)):
if data[j][0] == duplicates[i]:
if index> 0:
data[j][0] += str(index)
index +=1
这是我尝试过的,它对我有效。。。。我接受了帮助并声明了一个用于重命名重复值的类 类重命名器(): def初始化(自身): self.d=dict() 然后我对dataframe列使用了apply函数 df['ID']=df['ID'].apply(rename())这将解决您的问题