首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮数据类型python和sqlit3

浮数据类型python和sqlit3
EN

Stack Overflow用户
提问于 2022-07-04 20:35:26
回答 1查看 127关注 0票数 -1

我在大约40个sqlite3数据库中有2000万行数据。它们都是相同的: unix时间戳和几列数字。这些数字都是浮动类型的。(时间戳是str)这些表是我做的,定义为真实的。有时我会遇到麻烦,我认为这与数据类型有关。我似乎无法改变它。

我请求数据库中的类型,它给了我浮动。

有时候我没什么问题。但是这个小错误代码很有代表性。

代码语言:javascript
复制
for row in c.fetchmany(50):
    new_var = int(row[0])
    print ("test", type(new_var))

错误是

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/mrphy/Desktop/mu only/datatypes 01.py", line 45, in <module>
    new_var = int(row[0])
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'

我按时间间隔计算平均值等。我想当它找不到数字的时候就会结冰。但是过滤器似乎不起作用。

EN

回答 1

Stack Overflow用户

发布于 2022-07-04 21:21:15

用熊猫来阅读数据库。

代码语言:javascript
复制
import pandas as pd
df = pd.read_sql_query("Your query here", con) #con is your db connection 

然后替换所有空值(没有数字)并执行类似的熊猫操作,然后将该列的avg取为那样。

代码语言:javascript
复制
df['column name'] = df['column name'].fillna(0)
avg = df["column name"].mean()

但是在熊猫中装载2000万条记录可能需要一些时间来执行。

因此,接下来,我可以建议您使用try,除非它不会破坏您的代码,因为它没有得到任何数字。

代码语言:javascript
复制
for row in c.fetchmany(50):
    try:
        new_var = int(row[0])
        print ("test", type(new_var))
    except:
        pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72861797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档