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

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

我需要批量计算后复权,我有未复权的股票行情,及复权因子,总共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 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失