我有一个 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/