将某些列除以熊猫中的另一列

新手上路,请多包涵

想知道是否有更有效的方法将多个列划分为特定列。例如说我有:

 prev    open    close   volume
20.77   20.87   19.87   962816
19.87   19.89   19.56   668076
19.56   19.96   20.1    578987
20.1    20.4    20.53   418597

我想得到:

 prev    open    close   volume
20.77   1.0048  0.9567  962816
19.87   1.0010  0.9844  668076
19.56   1.0204  1.0276  578987
20.1    1.0149  1.0214  418597

基本上,“open”和“close”列已除以“prev”列中的值。

我能够做到这一点

df['open'] = list(map(lambda x,y: x/y, df['open'],df['prev']))
df['close'] = list(map(lambda x,y: x/y, df['close'],df['prev']))

我想知道是否有更简单的方法?特别是如果有 10 列要除以相同的值呢?

原文由 user1179317 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 692
2 个回答
df2[['open','close']] = df2[['open','close']].div(df2['prev'].values,axis=0)

输出:

     prev      open     close  volume
0  20.77  1.004815  0.956668  962816
1  19.87  1.001007  0.984399  668076
2  19.56  1.020450  1.027607  578987
3  20.10  1.014925  1.021393  418597

原文由 Scott Boston 发布,翻译遵循 CC BY-SA 3.0 许可协议

columns_to_divide = ['open', 'close']
df[columns_to_divide] = df[columns_to_divide] / df['prev']

原文由 DYZ 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题