Python - Pandas read_sql_query在6位数字后自动舍入



我正在尝试从sqlite3数据库读取数据到数据框架。问题是,我在DB中的数字看起来像21.639929701230166。如果我输出df这个数字四舍五入到21.639930。但是我需要确切的数字来做我的PCA。

db_conn = sqlite3.connect(DATABASE_FILE)
sql_query = pd.read_sql_query('''SELECT AvgRT FROM sensordata''', db_conn)
df = pd.DataFrame(sql_query)

我看到csv有float_precision。https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

SQL什么?

我已经尝试过强制转换它(如下所示:https://stackoverflow.com/a/70603287:

sql_query = pd.read_sql_query('''SELECT cast(AvgRT as decimal(25,25)) as AvgRT FROM sensordata''', db_conn)

,但这导致与之前相同的数字21.639930

是的,pandas的默认精度是6。

你可以使用这个pd.options.display.precision = 0方便的东西或使用下面的一个。

# (1) Round to specific decimal places – Single DataFrame column
df['DataFrame column'].round(decimals=number of decimal places needed)
# (2) Round up – Single DataFrame column
df['DataFrame column'].apply(np.ceil)
# (3) Round down – Single DataFrame column
df['DataFrame column'].apply(np.floor)
# (4) Round to specific decimals places – Entire DataFrame
df.round(decimals=number of decimal places needed)

最新更新