遍历熊猫表,在其他列上按条件更改值

时间:2018-08-09 08:27:41

标签: python pandas loops iterator

我目前正在尝试根据另一个列的值来更改熊猫列的值。到目前为止没有问题,但是我想遍历这两列以设置表,如下例所示:

我有一个像这样的熊猫桌:

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

我是编程新手,尝试的所有循环均失败。如果有人可以向我解释如何做,我将非常感激!

2 个答案:

答案 0 :(得分:2)

也许您需要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)

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

答案 1 :(得分:1)

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

this.model.predict([x])

输出:

df = pd.DataFrame({'id':[1,1,1,2,2,2], 'id2':[0,0,0,0,0,0]})

df['id2'] =1
df['id2'] = df.groupby('id')['id2'].cumsum()
print(df)