我在大约40个sqlite3数据库中有2000万行数据。它们都是相同的: unix时间戳和几列数字。这些数字都是浮动类型的。(时间戳是str)这些表是我做的,定义为真实的。有时我会遇到麻烦,我认为这与数据类型有关。我似乎无法改变它。
我请求数据库中的类型,它给了我浮动。
有时候我没什么问题。但是这个小错误代码很有代表性。
for row in c.fetchmany(50):
new_var = int(row[0])
print ("test", type(new_var))错误是
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'我按时间间隔计算平均值等。我想当它找不到数字的时候就会结冰。但是过滤器似乎不起作用。
发布于 2022-07-04 21:21:15
用熊猫来阅读数据库。
import pandas as pd
df = pd.read_sql_query("Your query here", con) #con is your db connection 然后替换所有空值(没有数字)并执行类似的熊猫操作,然后将该列的avg取为那样。
df['column name'] = df['column name'].fillna(0)
avg = df["column name"].mean()但是在熊猫中装载2000万条记录可能需要一些时间来执行。
因此,接下来,我可以建议您使用try,除非它不会破坏您的代码,因为它没有得到任何数字。
for row in c.fetchmany(50):
try:
new_var = int(row[0])
print ("test", type(new_var))
except:
passhttps://stackoverflow.com/questions/72861797
复制相似问题