Python 在表中循环,按其他列上的条件更改值

Python 在表中循环,按其他列上的条件更改值,python,pandas,loops,iterator,Python,Pandas,Loops,Iterator,我目前正在尝试根据另一列的值更改panda列的值。到目前为止没有问题,但我希望遍历这两列,以便按照下面的示例设置我的表: 我有一张这样的熊猫桌: id id2 1 0 1 0 1 0 2 0 2 0 2 0 ... id id2 1 1 1 2 1 3 2 1 2 2 2 3 ... 我想得到这样的东西: id id2 1 0 1 0 1 0 2 0 2 0 2 0 ... i

我目前正在尝试根据另一列的值更改panda列的值。到目前为止没有问题,但我希望遍历这两列,以便按照下面的示例设置我的表:

我有一张这样的熊猫桌:

id  id2
1    0
1    0
1    0
2    0
2    0
2    0
...
id  id2
1    1
1    2
1    3
2    1
2    2
2    3
...
我想得到这样的东西:

id  id2
1    0
1    0
1    0
2    0
2    0
2    0
...
id  id2
1    1
1    2
1    3
2    1
2    2
2    3
...
因此,我必须检查
id
列的值,并根据它更改
id2
的值。到目前为止,我只知道:

n=1
m=50
df.loc[df.id==n, 'id2'] = m
这给了我以下输出,但不是我想要做的:

 id  id2
 1   50
 1   50
 1   50
 2   50
 2   50
 2   50
我是编程新手,我尝试的所有循环都失败了。如果有人能告诉我怎么做,我会非常感激的

将cumsum()与groupby()一起使用

输出:

   id  id2
0   1    1
1   1    2
2   1    3
3   2    1
4   2    2
5   2    3
也许
DataFrame.rank()
方法就是您所需要的

示例:

import pandas as pd
df = pd.DataFrame({'id1':[1,1,1,2,2,2,3,3],'id2':[0,0,0,0,0,0,0,0]})
df['dummy_rank'] = df['id2'].groupby(df['id1']).rank(method='first').apply(int)

关键是“方法”参数,您可以通过文档熊猫了解更多信息。

如果您使用
.loc
,则应该可以。我不明白输出不符合要求。你好吗?按
n
循环,即范围(10)?您是否更改了
m
的值?因为如果您不这样做,那么每次循环时,相应的
n
都将更改,但更改为相同的
50
。非常感谢,这正是我正在搜索的!有没有办法从0开始而不是1?你可以使用
add(-1)
like
df['id2']=df.groupby('id')['id2'].cumsum().add(-1)