Python 使用Pandas和R将序列号添加到组中的每一行
我有一个如下所示的数据帧(下面给出了R和Python数据帧代码) 你能帮我回答以下问题吗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
序列号
为每个组连接,而未添加
您的解决方案很好,只是我使用
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]