Pandas问题-阅读sql

rkttyhzu  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(165)

我对pandas方法有个问题:read\u sql我从数据库中选择四列和大约100行。

import pymysql
sql = "SELECT `opens`,`high`,`low`,`close` FROM `dbname`"
result = ""
try:
    with c as cursor:
      cursor.execute(sql)
      result = cursor.fetchall()
    conn.commit()
finally:
    conn.close()
print(result)

上面这个例子的结果以正确的格式返回值,对于double和存储在数据库中的数据具有良好的精度。

opens       high        low         close
0.00016445  0.00016445  0.00016445  0.00016445

但是:

import pandas as pd
df = pd.read_sql(sql,conn,coerce_float=False)
print(df)

结果是:

opens     high      low       close
0.000164  0.000164  0.000164  0.000164

我需要使用数据库中的数据,这会在重新采样数据时造成很多问题。有人能帮我吗?
我试图改变铸造,并补充说,选项'强制\浮=假',但这似乎是一文不值
编辑:9.07.2018-1:
sql表名称:

CREATE TABLE `dbname` (
  `ids` int(11) NOT NULL AUTO_INCREMENT,
  `timestamp` int(10) unsigned NOT NULL,
  `high` double NOT NULL,
  `low` double NOT NULL,
  `opens` double NOT NULL,
  `close` double NOT NULL,
  `volume` double NOT NULL,
  `weightedAverage` double NOT NULL,
  PRIMARY KEY (`ids`)
) ENGINE=InnoDB AUTO_INCREMENT=16113 DEFAULT CHARSET=latin1

编辑10.07.2018-2:重采样示例:

df.set_index('timestamp', inplace=True)

# converting timestamp to DatatimeIndex

df.index = pd.to_datetime(df.index, unit='s')
conversion = {'opens': 'first', 'high': 'max', 'low': 'min', 'close': 'last'}

# df = df.resample('15Min', how = conversion, base=0)

 df = df.resample(self.period, closed='right').agg(conversion)
print(df)

编辑11.07.2018-编辑1我有该问题的部分解决方案:我在任何操作之前添加:

pd.set_option('display.float_format', lambda x: ('%.8f' % x).rstrip('.0'))

好吧,在这种设置下一切正常。我解决了那个问题。也许有人会有同样的问题,并迅速找到我的解决办法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题