由讀寫arrow引發的對時間時區的思考

arrow是apache開發的一種高壓縮的數據結構,發現用來存儲K線還是很不錯的選擇。

測試用python讀寫很方便,關鍵是足夠小,A股1支票1分鐘的數據,1個月大約是140多K吧。

結果從數據庫取出來存入arrow中,再用C++進行讀取,發現總有8小時的時差問題,估計就是東八區的問題。

c++讀取arrow數據,時間默認是按格林尼治時間來讀取,然后存入進去的沒有帶時區信息,因此讀,比如數據是2024年5月15日9點31分,存入應先將其轉成格林時間,即減掉8小時,即2024年5月15日1點31分,然后再消除時區印跡(貌似有時間印記c++讀取時會出錯),這樣C++那邊讀取的時間才能夠和這里寫入的時間對得上。

好,總結一下時間轉換,df中的時間一般從數據庫中讀取或是csv中讀取默認都沒有時間印記,但因為我們是在中國,所有人都認為看到的時間為東八區,因此存入arrow前先做時區調整,將之本地化東八區,然后轉成格林時間,再消除時間印記,存入arrow中,這樣所有人從arrow中讀取的時間都是格林時間,互相就對得上了。

demo示例:

讀取csv數據,注意,由于已經解析了時間格式,因此不需要再額外進行時間轉換:

df['time'] = pd.to_datetime(df['time'])??# 一般都是要做時間轉換的,但這時已經通過parse_dates已經成功解析了時間成為了datetime64[ns]這樣的類型
def read_csv(file_name):# 定義列名列表columns = ["time", "open"]data_types = {'open': 'float64'}# 讀取 CSV 文件,指定列名df_read = pd.read_csv(file_name, names=columns, dtype=data_types, header=None, parse_dates=["time"])# 打印讀取后的 DataFrameprint(df_read)return df_read

寫入arrow:

def write_arrow(df: DataFrame, file_name):import pyarrow as paimport pyarrow.parquet as pqif not df['time'].dt.tz:pd.to_datetime(df['time']).dt.tz_localize('Asia/Shanghai').dt.tz_convert('UTC').dt.tz_localize(None)table = pa.Table.from_pandas(df, preserve_index=False)pq.write_table(table, file_name)
if not df['time'].dt.tz: 表達的為如果沒有時區印記,即沒帶上時區信息,就先默認為東八區的時間本地化,再將之轉換為格林時間,最后將時區印記抹除(抹除的原因是防止C++讀取時出錯)

至于C++如何讀取這一塊,是有一點復雜,稍后有時間再補充上來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13162.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Cow Exhibition G的來龍去脈

[USACO03FALL] Cow Exhibition G - 洛谷 曲折經過 爆搜 一開始沒什么好的想法&#xff0c;就針對每頭奶牛去or不去進行了爆搜。 #include <cstdio> #include <algorithm> using namespace std;#define maxn 405 int iq[maxn], eq[maxn]; int ans; int n;void d…

留學資訊 | 2024英國學生簽證申請需要滿足哪些條件?

英國移民局于2020年9月10日發布了《移民規則變更聲明: HC 707》&#xff0c;對學生簽證制度進行了全面改革。該法案于2020年10月5日正式生效。根據此法案&#xff0c;新的學生簽證——The Student and Child Student Routes學生和兒童學生路線&#xff0c;將替代原先的Tier 4學…

短視頻賽道有哪些:成都鼎茂宏升文化傳媒公司

短視頻賽道有哪些&#xff1a;探索多元化的內容領域 隨著科技的飛速發展和人們生活節奏的加快&#xff0c;短視頻已成為現代人生活中不可或缺的一部分。它以其簡短、直觀、易于分享的特點&#xff0c;迅速占領了各個年齡層和社會群體的心智。然而&#xff0c;短視頻的賽道并非…

層次式體系結構概述

1.軟件體系結構 軟件體系結構可定義為&#xff1a;軟件體系結構為軟件系統提供了結構、行為和屬性的高級抽象&#xff0c;由構成系統的元素描述、這些元素的相互作用、指導元素集成的模式以及這些模式的約束組成。軟件體系結構不僅指定了系統的組織結構和拓撲結構&#xff0c;并…

小程序框架是智能融媒體平臺構建的最佳線路

過去5年&#xff0c;媒體行業一直都在進行著信息化建設向融媒體平臺建設的轉變。一些融媒體的建設演變總結如下&#xff1a; 新聞終端的端側內容矩陣建設&#xff0c;如App新聞端&#xff0c;社交平臺上的官方媒體等新聞本地生活雙旗艦客戶端&#xff0c;兼顧主流媒體核心宣傳…

TopOn 正式聚合Kwai 旗下程序化廣告平臺——Kwai Network

**我們非常高興的宣布&#xff0c;TopOn SDK 近日已正式聚合Kwai Network。**作為Kwai 旗下的程序化廣告平臺&#xff0c;Kwai Network 通過優質的變現能力及產品能力&#xff0c;為廣大開發者提供高效及時的服務。 TopOn 聚合平臺與Kwai Network 正式完成接入后&#xff0c;開…

實戰+代碼!Selenium + Phantom JS爬取天天基金數據

功能&#xff1a; 通過程序實現從基金列表頁&#xff0c;獲取指定頁數內所有基金的近一周收益率以及每支基金的詳情頁鏈接。再進入每支基金的詳情頁獲取其余的基金信息&#xff0c;將所有獲取到的基金詳細信息按近6月收益率倒序排列寫入一個Excel表格。 思路&#xff1a; 1.…

vm 虛擬機 Debian12 開啟 root、ssh 登錄功能

前言&#xff0c;安裝的時候語言就選中文就好了。選擇中文&#xff0c;在安裝的時候就可以選擇國內 163 的源。 開啟 ssh 功能 先提權&#xff0c;用 root 賬戶 su安裝 ssh 安裝 ssh-server apt install openssh-server啟動 ssh systemctl start ssh查看 ssh 狀態 systemctl st…

【Flutter 面試題】 如何讓圖片重復堆疊容器?

【Flutter 面試題】 如何讓圖片重復堆疊容器? 文章目錄 寫在前面口述回答補充說明寫在前面 ?? 關于我 ,小雨青年 ?? CSDN博客專家,GitChat專欄作者,阿里云社區專家博主,51CTO專家博主。2023博客之星TOP153。 ???? 正在學 Flutter 的同學,你好! ?? Flutter …

根據web訪問日志,封禁請求量異常的IP,如IP在半小 時后恢復正常則解除封禁

在網絡安全日益受到重視的今天&#xff0c;如何有效防范惡意流量和攻擊成為了每個網站管理員必須面對的問題。惡意流量不僅會影響網站的正常運行&#xff0c;還可能導致服務器崩潰&#xff0c;給網站帶來不可估量的損失。為了應對這一問題&#xff0c;我們特別推出了一款實用的…

u3d的ab文件注意事項

//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //讀取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…

SQL注入之數據庫基礎

數據庫基礎 創建數據庫 create 數據庫名稱;創建表 create table if not exists mobile(ID int(10) primary key auto_increment comment 手機編號 主鍵自增,Brand varchar(50) not null comment 手機品牌 非空約束,Model varchar(50) not null comment 手機型號 非空約束,Pr…

Keil手動安裝編譯器V5版本

V5編譯器下載&#xff1a;免積分下載 新版的keil不會自動幫你安裝V5版本的編譯器&#xff0c;但是很多教程很多比賽所用單片機都是V5的編譯器&#xff0c;所以用來開以前的或者開源的很多東西編譯直接一大堆報錯。 吐槽說完了接下來教你怎么解決 打開installer&#xff08;在…

vue使用postcss-pxtorem實現自適應

安裝&#xff1a; npm install postcss-pxtorem -Dvue.config.js文件設置&#xff1a; css: {loaderOptions: {scss: {additionalData: import "~element-ui/packages/theme-chalk/src/common/var.scss";import"/styles/variables.scss";},postcss: {po…

OpenGL ES 面試高頻知識點(二)

說說紋理常用的采樣方式? 最鄰近點采樣(GL_NEAREST)和雙線性采樣(GL_LINEAR)。 GL_NEAREST 采樣是 OpenGL 默認的紋理采樣方式,OpenGL 會選擇中心點最接近紋理坐標的那個像素,紋理放大的時候會有鋸齒感或者顆粒感。 **GL_LINEAR 采樣會基于紋理坐標附近的紋理像素,計…

搞大事!法國邀請芬蘭公司建量子工廠

法國當地時間5月13日&#xff0c;法國總統馬克龍宣布啟動2024年度“選擇法國”&#xff08;Choose France&#xff09;商業峰會。今年峰會召開前&#xff0c;法國贏得了創紀錄的150億歐元外國投資承諾&#xff0c;覆蓋從人工智能到制藥和能源等領域。 而涉及到量子領域最重磅的…

python數據處理與分析入門-pandas使用(4)

往期文章&#xff1a; pandas使用1pandas使用2pandas使用3 pandas使用技巧 創建一個DF對象 # 首先創建一個時間序列 dates pd.date_range(20180101, periods6) print(dates)# 創建DataFrame對象&#xff0c;指定index和columns標簽 df pd.DataFrame(np.random.randn(6,4), …

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選

el-select下拉框 添加 el-checkbox 多選框&#xff0c;支持全選、取消全選 前言一、實現思路二、實現代碼1.模板代碼2. css 樣式3.js 代碼 DEMO 演示總結 前言 實現效果預覽 提示&#xff1a;本內容基于element-ui 組件實現&#xff0c;如果使用其他組件庫、可參考下面實現方…

「AIGC算法」線性回歸模型

線性回歸是統計學和機器學習中一種常用的監督學習算法&#xff0c;用于預測連續數值型的輸出。線性回歸模型試圖找到特征變量&#xff08;或稱自變量&#xff09;與目標變量&#xff08;因變量&#xff09;之間的線性關系。 線性回歸的兩種主要類型&#xff1a; 簡單線性回歸&a…

學習Nginx(三):命令與信號

命令及選項 1. 顯示幫助信息&#xff1a; [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]選項:-?,-h : 顯示幫助信息-v : 顯示版本信息-V …