簡體   English   中英

如何在 Pandas 數據框中將時間戳轉換為 datetime.date?

[英]How do I convert timestamp to datetime.date in pandas dataframe?

我需要在日期上將 2 個 Pandas 數據框合並在一起,但它們目前具有不同的日期類型。 1 是時間戳(從 excel 導入),另一個是datetime.date

有什么建議嗎?

我試過pd.to_datetime().date但這僅適用於單個項目(例如df.ix[0,0] ),它不會讓我適用於整個系列(例如df['mydates'] ) 或數據框。

我得到了一位同事的幫助。

這似乎解決了上面發布的問題

pd.to_datetime(df['mydates']).apply(lambda x: x.date())

比上面簡單得多:

df['mydates'].dt.date

對我來說這有效:

from datetime import datetime
df[ts] = [datetime.fromtimestamp(x) for x in df[ts]]

如果您需要datetime.date對象...然后使用Timestamp.date屬性獲取它們

pd.to_datetime(df['mydates']).date

另一個問題被標記為dupe指向這個,但它沒有包含這個答案,這似乎是最直接的(也許這個方法在發布/回答這個問題時還不存在):

pandas 文檔顯示了一個pandas.Timestamp.to_pydatetime方法來“將時間戳對象轉換為原生 Python 日期時間對象”。

當我遇到類似問題時,我發現以下方法最有效。 例如,數據幀df在列ts具有一系列時間映射。

df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())

這進行了轉換,您可以.date()日期時間的.date()后綴。 然后更改數據框上的列。 像這樣...

df.loc[:, 'ts'] = df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())

假設時間列是時間戳整數毫秒格式

1 天 = 86400000 毫秒

干得好:

day_divider = 86400000

df['time'] = df['time'].values.astype(dtype='datetime64[ms]') # for msec format

df['time'] = (df['time']/day_divider).values.astype(dtype='datetime64[D]') # for day format

我試圖將時間戳列轉換為日期/時間,這是我想出的:

df['Timestamp'] = df['Timestamp'].apply(lambda timestamp: datetime.fromtimestamp(timestamp))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM