gra*_*ed8 0 influxdb influxdb-python
我正在尝试将日期/时间数据写入 influxdb 并将数据查询到数据帧。
当我写数据日期时间时看起来像这样......
ticker= 'AAPL'
import yfinance as yf
df = yf.Ticker('AAPL').history(period="1d").index[0]
print(df)
output:
Timestamp('2023-01-05 00:00:00-0500', tz='America/New_York')
Run Code Online (Sandbox Code Playgroud)
...当我将数据查询到数据帧并打印它时,我得到:
df['_time']
output:
0 2023-01-05 05:00:00+00:00
Name: _time, dtype: datetime64[ns, tzutc()]
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能在 influxdb 中正确写入时间?
请参阅下面的完整代码:
########## WRITE ##########
import yfinance as yf
import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS, PointSettings
token = "my-token"
org = "my-org"
url = "my-url"
bucket = "stocks_us"
retention_policy = "autogen"
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
write_api = client.write_api(write_options=SYNCHRONOUS)
df = yf.Ticker('AAPL').history(period="1d")
with client:
"""
Ingest DataFrame with default tags
"""
point_settings = PointSettings(**{"ticker": ticker})
write_api = client.write_api(write_options=SYNCHRONOUS,
point_settings=point_settings)
write_api.write(bucket=bucket,
org= "dev",
record=df,
data_frame_measurement_name="stock_daily_df")
client.close()
print(df)
Run Code Online (Sandbox Code Playgroud)
和
########## QUERY ##########
import influxdb_client
token = "my-token"
org = "my-org"
url = "my-url"
bucket = "stocks_us"
retention_policy = "autogen"
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
query_api = client.query_api()
measurement= "stock_daily_df"
with client:
"""
Querying ingested data
"""
query = 'from(bucket:"{}")' \
' |> range(start: 0, stop: now())' \
' |> filter(fn: (r) => r._measurement == "{}")' \
' |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")' \
' |> filter(fn: (r) => r["ticker"] == "AAPL")'\
' |> limit(n:10, offset: 0)'.format(bucket, measurement)
df = query_api.query_data_frame(query=query)
print(df)
Run Code Online (Sandbox Code Playgroud)
小智 5
Flux 将在UTC中完成所有工作,这是一个简单的线性时钟,并将其留给用户来计算显示。因此,为了保持时间戳一致,我们应该在插入数据之前将时间戳转换为UTC,并在查询完成后将数据结果转换回相应的时间戳。
1.在yfinance库中将时间戳转换为UTC:
dt.replace(tzinfo=timezone.utc)
Run Code Online (Sandbox Code Playgroud)
2.将 UTC 时间戳转换为本地时间戳:
import "timezone"
option location = timezone.location(name: "America/New_York")
Run Code Online (Sandbox Code Playgroud)
请在此处查看更多详细信息。
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |