[英]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.