首页 > 解决方案 > 使用 Pandas 和 R 将序列号连接到组中的每一行

问题描述

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

df = pd.DataFrame({'person_id': [11,11,11,12,12,12,12,13,13,13,13,13,14,14,14]})
df['enc_id'] = [1134567890,1134567890,1134567890,3456789210,3456789210,3456789210,3456789210,5643271890,5643271890,5643271890,5643271890,5643271890,2468013579,2468013579,2468013579]

person_id <- c(11,11,11,12,12,12,12,13,13,13,13,13,14,14,14)
enc_id <- c(1134567890,1134567890,1134567890,3456789210,3456789210,3456789210,3456789210,5643271890,5643271890,5643271890,5643271890,5643271890,2468013579,2468013579,2468013579)
df <- data.frame(person_id, enc_id)

我想enc_id为每个人连接一个序列号

我在Python中写了类似下面的东西

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

你能帮我解决以下问题吗?

  1. 我怎样才能在 R 中做到这一点?

  2. 在 Python 中有什么优雅的方法可以做到这一点?

我希望我的输出如下所示。您可以看到sequence number每个组和not added.

在此处输入图像描述

标签: pythonpandas

解决方案


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

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

推荐阅读