Python 将一列的值替换为表中其他两列的条件值
我有一个数据帧df:Python 将一列的值替换为表中其他两列的条件值,python,pandas,Python,Pandas,我有一个数据帧df: year ID category 1 1 0 2 1 1 3 1 1 4 1 0 1 2 0 2 2 0 3 2 1 4 2 0 我想创建一个新列,以便:对于特定的“年”,如果“类别”为1,“新类别”在未来几年将始终为1: year
year ID category
1 1 0
2 1 1
3 1 1
4 1 0
1 2 0
2 2 0
3 2 1
4 2 0
我想创建一个新列,以便:对于特定的“年”,如果“类别”为1,“新类别”在未来几年将始终为1:
year ID category new_category
1 1 0 0
2 1 1 1
3 1 1 1
4 1 0 1
1 2 0 0
2 2 0 0
3 2 1 1
4 2 0 1
我尝试了if-else条件,但得到了相同的“category”列
for row in range(1,df.category[i-1]):
df['new_category'] = df['category'].replace('0',df['category'].shift(1))
但我没有得到所需的列请尝试:
df['new_category'] = df.groupby('ID')['category'].cummax()
输出:
year ID category new_category
0 1 1 0 0
1 2 1 1 1
2 3 1 1 1
3 4 1 0 1
4 1 2 0 0
5 2 2 0 0
6 3 2 1 1
7 4 2 0 1
尝试:
输出:
year ID category new_category
0 1 1 0 0
1 2 1 1 1
2 3 1 1 1
3 4 1 0 1
4 1 2 0 0
5 2 2 0 0
6 3 2 1 1
7 4 2 0 1