Python 创建数字序列并按组附加

标签 python pandas

我想按组 ID 附加一系列数字。

我有一个如下所示的专栏:

ID [123, 124...]

我需要将数字序列 (1:485) 附加到每个唯一 ID,以便最终数据框如下所示:

ID     [123, 123, 123, 123, 124, 124, 124, 124...]
Number [1,    2,   3,   4,   1,   2 ,  3,   4...]

有人有简单的指导吗?

最佳答案

您可以重复索引 485 次并使用它来扩展 loccumcount 然后给出每个 ID 的 1...485 计数:

new_df = df.loc[df.index.repeat(485)].reset_index(drop=True)
new_df["Number"] = new_df.groupby("ID").cumcount().add(1)

获取

>>> new_df

      ID  Number
0    123       1
1    123       2
2    123       3
3    123       4
4    123       5
..   ...     ...
965  124     481
966  124     482
967  124     483
968  124     484
969  124     485

[970 rows x 2 columns]

关于Python 创建数字序列并按组附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68499949/

相关文章:

python - Pandas 时间序列 : find gaps in sessions, 并用单独的 ID 命名每个 session /间隙

python - 使用python如何计算四分位数/百分位数并给出创建新列进行分析的标准?

python - PySpark 无法将字典的 RDD 转换为 DataFrame。错误 : can not accept object in type <class 'pyspark.sql.types.Row' >

python - 动态修改 Python 方法和参数

python - 在 Python 中优化 itertools 排列

python - 告诉 pandas DataFrame 中缺失行的最佳方法是什么?

Python Pandas CSV 删除特定列中的所有字符串

python - 模块未找到错误: No module named 'bs4' even after installing and re-installing

python - 在 Django admin 中覆盖表单

python - 基于标签的索引 Pandas (.loc)