我在 AWS Athena 表中有一些数据行,我正在尝试获取过去 1 小时的数据。我正在使用 awswrangler,我将在下面发布我的代码片段。基本上,我不想使用 Python 查询所有数据,然后仅过滤掉最后 1 小时的数据,而是想在 Athena SQL 查询中执行此操作,以便获得更快的响应(从而缩短程序的执行时间)。我的代码是:
import awswrangler as wr
import boto3
session=boto3.Session()
df = wr.athena.read_sql_query(f"""SELECT *
FROM data_table""",
database="database",
keep_files = False,
boto3_session = session).sort_values('timestamp')
Run Code Online (Sandbox Code Playgroud)
我的进度:我可以使用 获取当前时间戳"SELECT CURRENT_TIMESTAMP",但这将以日期格式返回时间戳。为了获得最后 1 小时,我的想法是将 1 小时也转换为毫秒,然后从当前时间戳的毫秒中减去它并将其应用为过滤器。
笔记!timestamp表中的单位是毫秒。
我有以下代码:
import pandas as pd
df = pd.DataFrame({'a': [2], 'b': ['1'], 'c': ['3'], 'd': [5]})
print(df.dtypes)
Run Code Online (Sandbox Code Playgroud)
显然我明白了
a int64
b object
c object
d int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
作为输出。我想将每一列映射到 int64,但是自动映射 - 我不想手动遍历所有列并将它们每一列设置为 int64。有没有一种简单或巧妙的方法可以做到这一点?
PS 我知道我可以通过使用将类型更改为 int64 pd.to_numeric(df['b']),例如。我想对所有列执行此操作。