qq_38411575 2021-06-03 11:44 采纳率: 77.8%
浏览 38
已结题

批量计算后复权问题,如何优化

我需要批量计算后复权,我有未复权的股票行情,及复权因子,总共1千多万行,如下,

     ts_code trade_date   open   high    low  close  pre_close  change  pct_chg        vol       amount  adj_factor
0  000001.SZ   20210602  23.89  23.92  23.38  23.89      23.92   -0.03  -0.1254  497527.02  1176608.126     111.921
1  000002.SZ   20210602  26.50  27.18  26.31  26.76      26.60    0.16   0.6015  853545.06  2287264.276     153.901
2  000004.SZ   20210602  16.21  17.18  15.92  16.57      15.98    0.59   3.6921   47125.57    77192.135       4.064
3  000005.SZ   20210602   1.80   1.83   1.77   1.80       1.79    0.01   0.5587   82388.69    14812.102       9.268
4  000006.SZ   20210602   5.29   5.29   5.22   5.24       5.28   -0.04  -0.7576   58093.43    30539.090      36.507
5  000007.SZ   20210602   3.70   3.71   3.64   3.66       3.70   -0.04  -1.0811   29560.28    10841.980       8.284
6  000008.SZ   20210602   2.27   2.29   2.27   2.28       2.28    0.00   0.0000  126807.00    28933.202      22.408
7  000009.SZ   20210602  10.00  10.09   9.89   9.92      10.05   -0.13  -1.2935  253313.77   252740.741       8.881
8  000010.SZ   20210602   4.01   4.05   4.00   4.02       4.03   -0.01  -0.2481   45925.00    18472.845      10.775
9  000011.SZ   20210602  12.86  12.90  12.42  12.52      12.97   -0.45  -3.4695   91615.92   115647.098       3.875

我使用如下代码计算后复权

df[['close', 'open', 'high', 'low']] = df[['close', 'open', 'high', 'low']].to_numpy() * df['adj_factor'].to_numpy()

提示错误:

Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3418, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-21-f7878ae9f133>", line 1, in <module>
    df[['close', 'open', 'high', 'low']] = df[['close', 'open', 'high', 'low']].to_numpy() * df['adj_factor'].to_numpy()
ValueError: operands could not be broadcast together with shapes (11516015,4) (11516015,) 

,请问,该如何修改?

  • 写回答

1条回答 默认 最新

  • qq_38411575 2021-06-03 12:48
    关注

    使用`pd.mul()`

    df[['close', 'open', 'high', 'low']]=df[['close', 'open', 'high', 'low']].mul(df['adj_factor'],axis=0)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 已采纳回答 8月19日

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试