2017-10-16 44 views
0

例如,我有以下的数据帧DF的Python熊猫:上索引更改价值基

 r1  r2 
1 False 10 
2 True 20 
3 True 40 

我想改变R2的值,以它的索引的值成为功率其指数如果R1是真

pow(index, index) 

期望的结果是

 r1  r2 
1 False 10 
2 True 4 
3 True 27 

我知道如何定位其细胞在v alues需要改变,但我知道如何将它们设置为常数,即0

df.loc[df['r1'] == True, 'r2'] = 0 

但我不知道如何将它设置为它的索引的功能

谢谢你的帮助

+0

如果您的问题已经回答了,说感谢是最好的办法[接受一个答案,帮助你(https://stackoverflow.com/help/someone -answers) –

回答

2

使用pd.DataFrame.mask

df.r2.mask(df.r1, df.index ** df.index, inplace=True) 
df 

     r1 r2 
1 False 10 
2 True 4 
3 True 27 
1

使用df.r1找到索引,然后索引r2并重新分配。

idx = df[df['r1']].index  
df.loc[df['r1'], 'r2'] = idx ** idx 

print(df) 
     r1 r2 
1 False 10 
2 True 4 
3 True 27