python - 根据另一列的值增加列值

标签 python pandas

我有一个 df 如下:


       ID  Value  counter  
    0  A   30      3
    1  A   30      3
    2  A   30      3
    3  A   30      3
    4  A   30      3
    5  A   30      3
    6  B   50       2
    7  B   50       2
    8  B   50       2
    9  B   50       2
   10  C   40      2
   11  C   40      2
   12  C   40      2
   13  C   40      2

我想添加一个新列 Value1。在每次重复 ID 时,Value 列中的值应递增并保存在 Value1 列中。但是,它应该只增加 Counter 列中给出的数字,然后它应该重复。以下是所需的输出。

   ID  Value  counter  Value1
0  A   30      3        31
1  A   30      3        32
2  A   30      3        33
3  A   30      3        31
4  A   30      3        32
5  A   30      3        33 
6  B   50      2        51
7  B   50      2        52
8  B   50      2        51
9  B   50      2        52
10  C   40      2        41
11  C   40      2        42
12  C   40      2        41
13  C   40      2        42

我的尝试:

df['Value1'] = df['Value']
df['Value1'] += df.groupby('ID')['Value1'].cumcount() +1

但这并没有考虑计数器,只是递增。如何在计数器值达到后重复递增。

最佳答案

您需要使用模运算符通过 df["counter"] 的值重置您的 .cumcount

df["Value1"] = (
    df["Value"] + df.groupby("ID")["Value"].cumcount().mod(df["counter"]).add(1)
)

print(df)
   ID  Value  counter  Value1
0   A     30        3      31
1   A     30        3      32
2   A     30        3      33
3   A     30        3      31
4   A     30        3      32
5   A     30        3      33
6   B     50        2      51
7   B     50        2      52
8   B     50        2      51
9   B     50        2      52
10  C     40        2      41
11  C     40        2      42
12  C     40        2      41
13  C     40        2      42

关于python - 根据另一列的值增加列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67982095/

相关文章:

python - Gunicorn 和主管背后的 Flask - 记录所有请求和响应

python - 你如何在python中定义本地路径

python - pandas 如何检查数据框中所有列的 dtype?

python - 如何处理 CSV 的列不一致

python - 读取特定 block pandas/不读取 pandas 中的所有 block

python - Pandas:根据现有列将列添加到 DataFrame

python - 最后在 except 中重新抛出异常,在 python 中引发

python - 在 PANDAS 中使用 value_counts() 出现次数/频率为零

python - 将多个句子标记为 python pandas 中的行

python - 使用 Pandas 将 Flask 文件上传的原始文件内容转换为数据框