我目前正在尝试根据另一个列的值来更改熊猫列的值。到目前为止没有问题,但是我想遍历这两列以设置表,如下例所示:
我有一个像这样的熊猫桌:
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
我是编程新手,尝试的所有循环均失败。如果有人可以向我解释如何做,我将非常感激!
答案 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)