[英]Date not writing to parquet file as expected
我有一個問題,日期在從 Pandas df 寫入鑲木地板文件后沒有按預期顯示。
以下是我的工作流程的簡要說明:
Step1: Parquet file1 位於存儲賬戶中,可以使用 Synapse serverless SQL 查詢。當 Date 列中的查詢值顯示為預期即 2022-01-01 (yyyy-MM-dd) 源數據中沒有時間.
Step2:使用pd.read_parquet將Parquet file1加載到pandas df中。 一旦 parquet 文件被加載到 df 中,Date 列的 dtype 就是 datetime64[ns]。
第 3 步:執行 df 的一些處理,有效地將一些列添加到 df 中的現有列,同時保持相同的索引。 日期列未更改。
Step4:在將df寫入parquet之前確認Date列仍然是dtype datetime64[ns]。 並列出內容 df['Date'] 給出諸如 2022-01-13 之類的值。
Step5:使用df.to_parquet將df寫入parquet file2。
Step6:在synapse serverless SQL中查詢Parquet file2,Date列中的值顯示為EPOCH時間 例如:1640995200000000
如何以與在 file1 中相同的方式將日期存儲在 file2 中? 我不需要時間戳,但如果需要讓它工作,可以添加一個時間戳,即“T00:00:00”?
Pandas 在我當前的設置中使用 pyarrow 進行鑲木地板解析。
pandas
本身不支持日期,只支持時間戳。
出於某種原因,當您從 parquet 讀取數據時,日期被重新解釋為時間戳,當您將其保存回 parquet 時,它們仍然是時間戳。
您可以更改代碼,這樣日期就不會轉換為時間戳。
或者您可以在將時間戳保存到鑲木地板之前將其轉換回最新日期:
import pandas as pd
df = pd.DataFrame(
{"Date": pd.Series(pd.Timestamp(2023,1,1))}
)
def convert_timestamps_to_dates_df(df):
for col in df.columns:
if df[col].dtype == "datetime64[ns]":
df[col] = df[col].dt.date
return df
convert_timestamps_to_dates_df(df).to_parquet("file.parquet")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.