tkfy920 / qstock

qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析包,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(策略backtest)模块。 qstock将为用户提供简洁的数据接口和规整化后的金融市场数据。可视化模块为用户提供基于web的交互图形的简单接口; 选股模块提供了同花顺的选股数据和自定义选股,包括RPS、MM趋势、财务指标、资金流模型等; 回测模块为大家提供向量化(基于pandas)和基于事件驱动的基本框架和模型。 关注“Python金融量化“微信公众号,获取更多应用信息。
MIT License
893 stars 237 forks source link

df=qs.north_money('个股',5)报错无法执行 #36

Open ZhongZhijun opened 3 months ago

ZhongZhijun commented 3 months ago

北向资金增持个股情况

有个小bug,列名没有对应起来,该函数调用将报错,将在新版本中修正。

df=qs.north_money('个股',5)

df.tail()

报错无法执行: 1720425180230

ZhongZhijun commented 3 months ago

ValueError Traceback (most recent call last) Cell In[65], line 1 ----> 1 df=qs.north_money('个股',5)

File c:\program files\python\lib\site-packages\qstock\data\money.py:142, in north_money(flag, n) 134 '''flag=None,默认返回北上资金总体每日净流入数据 135 flag='行业',代表北向资金增持行业板块排行 136 flag='概念',代表北向资金增持概念板块排行 (...) 139 即 {'1':"今日", '3':"3日",'5':"5日", '10':"10日",'M':"月", 'Q':"季", 'Y':"年"} 140 ''' 141 if flag=='个股': --> 142 return north_money_stock(n) 144 elif flag in ['行业','概念','地域']: 145 return north_money_sector(flag, n)

File c:\program files\python\lib\site-packages\qstock\data\money.py:232, in north_money_stock(n) 230 df.resetindex(inplace=True) 231 df["index"] = range(1, len(df) + 1) --> 232 df.columns = [ 233 "序号","","","日期","","名称","","","代码","", "","","", 234 "持股数","持股市值","持股占流通股比","持股占总股本比", 235 "收盘","涨幅","","所属板块","","","","","","","", "", 236 "","", f'{period}增持市值',f'{period}增持股数',f'{period}增持市值增幅', 237 f'{period}增持占流通股比',f'{period}增持占总股本比', 238 "","","","","","","",] 239 df = df[ 240 ["代码","名称","收盘","涨幅", "持股数","持股市值","持股占流通股比", 241 "持股占总股本比",f'{period}增持股数',f'{period}增持市值', 242 f'{period}增持市值增幅',f'{period}增持占流通股比',f'{period}增持占总股本比', 243 "所属板块", "日期",] ] 244 df["日期"] = pd.to_datetime(df["日期"]).dt.date

File c:\program files\python\lib\site-packages\pandas\core\generic.py:5915, in NDFrame.setattr(self, name, value) 5913 try: 5914 object.getattribute(self, name) -> 5915 return object.setattr(self, name, value) 5916 except AttributeError: 5917 pass

File c:\program files\python\lib\site-packages\pandas_libs\properties.pyx:69, in pandas._libs.properties.AxisProperty.set()

File c:\program files\python\lib\site-packages\pandas\core\generic.py:823, in NDFrame._set_axis(self, axis, labels) 821 def _set_axis(self, axis: int, labels: AnyArrayLike | list) -> None: 822 labels = ensure_index(labels) --> 823 self._mgr.set_axis(axis, labels) 824 self._clear_item_cache()

File c:\program files\python\lib\site-packages\pandas\core\internals\managers.py:230, in BaseBlockManager.set_axis(self, axis, new_labels) 228 def set_axis(self, axis: int, new_labels: Index) -> None: 229 # Caller is responsible for ensuring we have an Index object. --> 230 self._validate_set_axis(axis, new_labels) 231 self.axes[axis] = new_labels

File c:\program files\python\lib\site-packages\pandas\core\internals\base.py:70, in DataManager._validate_set_axis(self, axis, new_labels) 67 pass 69 elif new_len != old_len: ---> 70 raise ValueError( 71 f"Length mismatch: Expected axis has {old_len} elements, new " 72 f"values have {new_len} elements" 73 )

ValueError: Length mismatch: Expected axis has 44 elements, new values have 43 elements