熊猫:索引重复.如何让它独一无二



>我有一个数据帧

df=pd.DataFrame({'id': [1, 2, 2, 4], 'animal': ['dog', 'cat', 'bear', 'mouse']})
# just rearranging the order a bit
df=df[['id', 'animal', 'name']]
id animal Seq
1   dog   14
2   cat   17
2   bear  19
4   mouse 23

正如您在上面看到的,ID 不是唯一的,我想创建一个唯一的 ID。 我想的一个选项是分组依据(ID(,然后创建一个新列,我可以在其中创建一个计数器。然后也许合并计数器和 ID 以创建一个唯一的 ID。

id animal     Seq Counter NewID(counter+id)
1   dog   14   1       11
2   cat   17   1       21
2   bear  19   2       22
4   mouse 23   1       41

我不确定如何实现这一目标

GroupBy.cumcount用于计数器并添加到原始id转换为字符串Series.add

df['NewID'] = df['id'].astype(str).add(df.groupby('id').cumcount().add(1).astype(str))
print (df)
id animal NewID
0   1    dog    11
1   2    cat    21
2   2   bear    22
3   4  mouse    41

试试这个:

import pandas as pd 
df=pd.DataFrame({'id': [1, 2, 2, 4], 'animal': ['dog', 'cat', 'bear', 'mouse']})
df = df.assign(id=(df['animal']).astype('category').cat.codes + 1)
df

输出为:

id   animal
0   3   dog
1   2   cat
2   1   bear
3   4   mouse

最新更新