2017-10-16 48 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