重命名数据框中的相同标签

时间:2019-04-01 02:38:27

标签: python pandas dataframe

我现在没有代码,也无法发布。但是,我为一个数据框执行了一个.drop_duplicates方法,并且有多个具有相同标签的行。如何重命名标签,以使名称“ Terry”更​​改为“ Terry 1”,“ Terry 2”,“ Terry 3”等等?

以下是一些模拟代码:

series1 = ['M','M','S','S','S','T','T']
series2 = [1,2,1,1,3,4,4]
series3 = [2,4,2,2,2,2,2]
data = pd.DataFrame.from_dict({'Name':series1,'Number 1': series2,'Number 2':series3})

我正在尝试根据名称是否与先前的标签匹配,将名称更改为M_0,M_1,S_0,S_1,S_0等...

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助。 我的样本df:

       col2
col1       
Jack      1
Terry     2
Paul      3
Terry     4
Terry     5

然后我将索引放在列表中,并在this解决方案中使用Jochen Ritzel的函数来处理重复项(我修改了他的函数,在重复索引后添加了数字)。

函数在这里:

def rename_duplicates(old): 
        seen = {} 
        for x in old: 
            if x in seen: 
                seen[x] += 1 
                yield "%s%d" % (x, seen[x]) 
            else: 
                seen[x] = 0 
                yield x 

然后存储新索引:

new_index = list(rename_duplicates(indexList))

现在您要做的就是将当前df中的索引更改为新索引,如下所示:

df.reset_index(drop=True, inplace=True)
df.index = new_index