使用 pandas 添加一列数据
import jqdata
import pandas as pd
from pandas import DataFrame
import numpy as np
security = ['000001.XSHE', '000040.XSHE', '000099.XSHE'];
h = get_price(security, start_date='2020-03-26', end_date='2020-03-27', frequency='1m', fields=None, skip_paused=False, fq='pre')
h = h.transpose(2,1,0);
date='2020-03-26';
for code in security:
q = query(valuation).filter(valuation.code == code)
c = get_fundamentals(q, date=None, statDate=None)
capita_field = c['circulating_cap'][0]
print(capita_field)
h[code] = DataFrame(h[code])
h[code]['circulating_cap'] = capita_field
print(h[code].head())
for code in security:
print(code)
print(h[code].head())
各种位老师!
我在第一个循环时打印数据,感觉不对,但从遍历的结果看是三组数据中有二组新增一列是成功的。
但是到了第二个循环打印出来的结果却是只有最后一组数据有新增一列数据,结果如下:
复制内容如下:
2020-03-25 00:00:00 - INFO - 1940575.25
2020-03-25 00:00:00 - INFO - close high low money open volume
2020-03-26 09:31:00 12.75 12.78 12.74 21562519 12.78 1689100
2020-03-26 09:32:00 12.79 12.79 12.74 8336756 12.75 653100
2020-03-26 09:33:00 12.80 12.80 12.78 9250124 12.78 723100
2020-03-26 09:34:00 12.80 12.80 12.78 3501228 12.78 273700
2020-03-26 09:35:00 12.82 12.82 12.79 8527458 12.79 665800
circulating_cap
2020-03-26 09:31:00 1940575.25
2020-03-26 09:32:00 1940575.25
2020-03-26 09:33:00 1940575.25
2020-03-26 09:34:00 1940575.25
2020-03-26 09:35:00 1940575.25
2020-03-25 00:00:00 - INFO - 106034.0703
2020-03-25 00:00:00 - INFO - close high low money open volume circulating_cap
2020-03-26 09:31:00 3.54 3.55 3.53 1976123 3.54 558900 106034.0703
2020-03-26 09:32:00 3.53 3.54 3.53 603107 3.53 170800 106034.0703
2020-03-26 09:33:00 3.54 3.54 3.53 461279 3.53 130600 106034.0703
2020-03-26 09:34:00 3.55 3.55 3.53 608014 3.54 171700 106034.0703
2020-03-26 09:35:00 3.55 3.55 3.54 312608 3.55 88200 106034.0703
2020-03-25 00:00:00 - INFO - 60607.043
2020-03-25 00:00:00 - INFO - close high low money open volume circulating_cap
2020-03-26 09:31:00 6.34 6.36 6.33 1521427 6.35 239700 60607.043
2020-03-26 09:32:00 6.35 6.36 6.34 292984 6.34 46100 60607.043
2020-03-26 09:33:00 6.36 6.36 6.35 245919 6.35 38700 60607.043
2020-03-26 09:34:00 6.35 6.36 6.34 346777 6.35 54600 60607.043
2020-03-26 09:35:00 6.38 6.39 6.36 760788 6.36 119300 60607.043
但是到了第二个循环打印出来的结果却是只有最后一组数据有新增一列数据,结果如下:
2020-03-25 00:00:00 - INFO - 000001.XSHE
2020-03-25 00:00:00 - INFO - close high low money open volume
2020-03-26 09:31:00 12.75 12.78 12.74 21562519 12.78 1689100
2020-03-26 09:32:00 12.79 12.79 12.74 8336756 12.75 653100
2020-03-26 09:33:00 12.80 12.80 12.78 9250124 12.78 723100
2020-03-26 09:34:00 12.80 12.80 12.78 3501228 12.78 273700
2020-03-26 09:35:00 12.82 12.82 12.79 8527458 12.79 665800
2020-03-25 00:00:00 - INFO - 000040.XSHE
2020-03-25 00:00:00 - INFO - close high low money open volume
2020-03-26 09:31:00 3.54 3.55 3.53 1976123 3.54 558900
2020-03-26 09:32:00 3.53 3.54 3.53 603107 3.53 170800
2020-03-26 09:33:00 3.54 3.54 3.53 461279 3.53 130600
2020-03-26 09:34:00 3.55 3.55 3.53 608014 3.54 171700
2020-03-26 09:35:00 3.55 3.55 3.54 312608 3.55 88200
2020-03-25 00:00:00 - INFO - 000099.XSHE
2020-03-25 00:00:00 - INFO - close high low money open volume circulating_cap
2020-03-26 09:31:00 6.34 6.36 6.33 1521427 6.35 239700 60607.043
2020-03-26 09:32:00 6.35 6.36 6.34 292984 6.34 46100 60607.043
2020-03-26 09:33:00 6.36 6.36 6.35 245919 6.35 38700 60607.043
2020-03-26 09:34:00 6.35 6.36 6.34 346777 6.35 54600 60607.043
2020-03-26 09:35:00 6.38 6.39 6.36 760788 6.36 119300 60607.043
想不出错误在哪?请各位老师帮助
关于 LearnKu
我觉得语法内容应该没错,可能是你的问题问错了
也许时间点也不对 ...
你看一下你提供的内容和代码的顺序不同 ?!
例如代码中再加个时间啊,或索引指示是相同替换的输出,还有先后顺序。
在我修改新增字段的名字后,新增一列的结果应该是正确了,只是不知道为什么?这是什么规则?新增一列的字段名 只能是一个字母吗?如下图:
当新增列数据不为None 时,又出现前面类似问题,
这里打印的数据类型
会不会是这个数据类型引起的问题呢?
尝试打印数据类型,结果如下:
我简单试了一下, 没啥问题
最好的方式还是要
至少想回答你问题的人, 可以试试, 喔, 真的会出问题? 再去找答案.
谁也不知道私底下你又有什么线程在跑, 什么时间又改变了什么数据 ? 或也许不同的数据结构出错 ?
@Jason990420 正在理解你的代码,但我感觉重点在你 代码 V 这个位置,如果我直接赋值,是正确的(像你这个V的位置),但我这里是取的是一个表的数据,然后在另一个表中新增一列并添加此数据,此时就出了问题。我上面打印出了它的类型我怀疑是数据类型引起的
@Jason990420 你好,下图你可以看到,直接赋值是没有问题的
不会啊, 我改了 v=100, 还是OK, numpy 就会全部元素都是100.
@Jason990420 你可以再看看这张图,这里就出错了
@Jason990420 我是说直接赋值是没有问题的,如果可以,我可以将我调试代码登录密码发你
嗯, 私信给我, 我找找问题
@Jason990420 谢谢,我已经发你了,非常感谢!