【问题标题】:Renaming same labels in a dataframe重命名数据框中的相同标签
【发布时间】:2019-04-01 02:38:26
【问题描述】:

我现在没有可用的代码,也无法发布;但是,我为数据框执行了 .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 等...根据它是否与以前的标签匹配

【问题讨论】:

  • “我现在没有可用的代码,我无法发布它”然后请不要发布您的问题,直到您这样做。
  • 我很抱歉,但我实际上无法发布我的代码。

标签: python pandas dataframe


【解决方案1】:

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

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

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

函数在这里:

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

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 2021-03-18
    • 2015-06-04
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多