Pandas数据框-用倒数替换列值

7

我的数据框看起来像这样:

           0     1         2         3         4
           0   0.660377  0.75  0.728395  1.000000  0.011364
           1   0.452830  0.50  0.629630  0.083333  0.045455
           2   0.971698  0.75  0.975309  0.166667  0.079545
           3   0.169811  0.25  0.172840  0.291667  0.068182
           4   0.216981  0.25  0.222222  0.000000  0.090909
           5   0.669811  0.50  0.839506  0.333333  0.045455

我需要用倒数值替换第一列。在Pandas中有没有任何内置的方法可以实现这个功能?

1个回答

12
我认为您需要用1除以一个数:
df[0] = 1 / df[0]
print (df)
          0     1         2         3         4
0  1.514287  0.75  0.728395  1.000000  0.011364
1  2.208334  0.50  0.629630  0.083333  0.045455
2  1.029126  0.75  0.975309  0.166667  0.079545
3  5.888900  0.25  0.172840  0.291667  0.068182
4  4.608698  0.25  0.222222  0.000000  0.090909
5  1.492958  0.50  0.839506  0.333333  0.045455

或者使用DataFrame.rdiv:

df[0] = df[0].rdiv(1)
print (df)
          0     1         2         3         4
0  1.514287  0.75  0.728395  1.000000  0.011364
1  2.208334  0.50  0.629630  0.083333  0.045455
2  1.029126  0.75  0.975309  0.166667  0.079545
3  5.888900  0.25  0.172840  0.291667  0.068182
4  4.608698  0.25  0.222222  0.000000  0.090909
5  1.492958  0.50  0.839506  0.333333  0.045455

或使用numpy.reciprocal

df[0] = np.reciprocal(df[0])
print (df)
          0     1         2         3         4
0  1.514287  0.75  0.728395  1.000000  0.011364
1  2.208334  0.50  0.629630  0.083333  0.045455
2  1.029126  0.75  0.975309  0.166667  0.079545
3  5.888900  0.25  0.172840  0.291667  0.068182
4  4.608698  0.25  0.222222  0.000000  0.090909
5  1.492958  0.50  0.839506  0.333333  0.045455

值得注意的是,DataFrame.rdivnp.reciprocal中哪个不会在零/NaN/NaT等情况下崩溃。 - smci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接