我现在没有代码,也无法发布。但是,我为一个数据框执行了一个.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等...
答案 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