Python Pandas:改变索引的价值基础

时间:2017-10-16 22:19:04

标签: python pandas

例如,我有以下数据框df

     r1     r2  
1    False  10  
2    True   20  
3    True   40  

如果r1为True,我想将r2的值更改为其索引值的索引值

pow(index, index)

期望的结果是

      r1     r2  
1    False  10  
2    True   4  
3    True   27

我知道如何定位需要更改值的单元格,但我只知道如何将它们设置为常量,即0

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

但我不知道如何将其设置为索引

的功能

感谢您的帮助

2 个答案:

答案 0 :(得分: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 :(得分: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