在learning我必须应用converters
参数(而不是dtype
)来获得decimal.Decimal
类的pandas列之后,我尝试使用一个模块来访问SQLite数据库。然而,尽管此参数在pd.read_csv
中实现,并且在pd.read_excel
中作为kwarg提供,但pd.read_sql
的情况并非如此:
In [1]: df = pd.read_sql('SELECT * FROM table', myconnection, converters={'somecol':decimal.Decimal})
Traceback (most recent call last):
File "<ipython-input-13-abdc559366bb>", line 1, in <module>
pd.read_sql('SELECT * FROM table', myconnection, converters={'somecol':decimal.Decimal})
TypeError: read_sql() got an unexpected keyword argument 'converters'
有没有办法在本地进行转换?函数的documentation表示pd.read_sql
根本不允许任何KWARG
如果不可能,最推荐的解决方案是什么?我可以使用df['somecol'] = df['somecol'].apply(decimal.Decimal)
,但我想知道在这种情况下是否有一种不太详细的方法
通过
register_converter
函数,然后调用连接上的参数,可以在SQLite3's自己的文档中找到解决方案:这样,在SQLite中存储为实数的所有数字在读取时将自动转换为
Decimal
Obs:注意
conv
函数中十进制之前的字符串转换是为了保留数字的状态(尽管调用conv(1.1+2.2)
将导致格式错误的小数)相关问题 更多 >
编程相关推荐