Python 使用Pandas和R将序列号添加到组中的每一行

Python 使用Pandas和R将序列号添加到组中的每一行,python,pandas,Python,Pandas,我有一个如下所示的数据帧(下面给出了R和Python数据帧代码) 你能帮我回答以下问题吗 我在R怎么做 在Python中有什么优雅的方法可以做到这一点吗 我希望我的输出如下所示。您可以看到,序列号为每个组连接,而未添加 您的解决方案很好,只是我使用astype转换为字符串: df['new_enc_id'] = (df['enc_id'].astype(str) + (df.groupby('person_id').cumcount()+1).ast

我有一个如下所示的数据帧(下面给出了R和Python数据帧代码)

你能帮我回答以下问题吗

  • 我在R怎么做

  • 在Python中有什么优雅的方法可以做到这一点吗

  • 我希望我的输出如下所示。您可以看到,
    序列号
    为每个组连接,而
    未添加


    您的解决方案很好,只是我使用
    astype
    转换为字符串:

    df['new_enc_id'] = (df['enc_id'].astype(str) + 
                        (df.groupby('person_id').cumcount()+1).astype(str))
    
    在R


    使用
    transform
    +
    ave

    df <- transform(
      df,
      new_enc_id = paste0(new_enc_id, ave(1:nrow(df), person_id, FUN = seq_along))
    )
    

    df在
    R
    空间内,您可以使用
    数据获得相同的结果。表

    setDT(df)
    
    df[, paste0(enc_id,row.names(.SD)), by=person_id]
    

    对于python解决方案,@jezrael的解决方案就足够了。

    我可以知道为什么
    enc\u id
    sequence number
    之间有空格吗?@粘贴到粘贴0的巨大变化~
    df = df %>% group_by(person_id) %>% dplyr::mutate(new_enc_id = paste0(enc_id,row_number()) )
    
    df <- transform(
      df,
      new_enc_id = paste0(new_enc_id, ave(1:nrow(df), person_id, FUN = seq_along))
    )
    
    setDT(df)
    
    df[, paste0(enc_id,row.names(.SD)), by=person_id]