1
У меня есть кадр данных, как показано нижеСоздание нового столбца в панде dataframe с использованием логической индексации и группы по
df=pd.DataFrame({'a':['a','a','b','a','b','a','a','a'], 'b' : [1,0,0,1,0,1,1,1], 'c' : [1,2,3,4,5,6,7,8],'d':['1','2','1','2','1','2','1','2']})
df
Out[94]:
a b c d
0 a 1 1 1
1 a 0 2 2
2 b 0 3 1
3 a 1 4 2
4 b 0 5 1
5 a 1 6 2
6 a 1 7 1
7 a 1 8 2
Я хочу что-то вроде ниже
df[(df['a']=='a') & (df['b']==1)]
В [97]:
df[(df['a']=='a') & (df['b']==1)].groupby('d')['c'].rank()
df[(df['a']=='a') & (df['b']==1)].groupby('d')['c'].rank()
Out[97]:
0 1
3 1
5 2
6 2
7 3
dtype: float64
Я хочу, чтобы этот ранг был новым столбцом в dataframe df и везде, где нет ранга, я хочу NaN. SO окончательный выход будет чем-то вроде ниже
a b c d rank
0 a 1 1 1 1
1 a 0 2 2 NaN
2 b 0 3 1 NaN
3 a 1 4 2 1
4 b 0 5 1 NaN
5 a 1 6 2 2
6 a 1 7 1 2
7 a 1 8 2 3
Буду признателен за всю помощь и руководство. Большое спасибо.
Большое спасибо, работает отлично. Не могу вас поблагодарить. –