我正在尝试从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)