簡體   English   中英

將 Timestamps 列轉換為 datetime.datetime。 適用於 1 行,而不適用於列

[英]Convert column of Timestamps to datetime.datetime. Works on 1 row, not on column

我查看了該站點上的每個答案,包括這個: 將時間戳轉換為 pandas.Series 中的 datetime.datetime並且沒有任何效果。 它總是返回一個時間戳。

我有一個帶有time列的數據框,其中包含2022-06-24 15:07:52格式class 'pandas._libs.tslibs.timestamps.Timestamp'>值。

我正在嘗試使用 pandas 的pd.df.to_sql函數將我的整個數據框寫入 MySQL 數據庫。 但是我遇到了一個錯誤,因為數據庫中time列的類型是Datetime ,所以我需要在數據框中將 Timestamps 轉換為 Datetime 格式。

我試過df['time'] = pd.to_datetime(df['time']) ,它返回時間戳。

當應用於單行時,唯一有效的是df['time'][0].to_pydatetime() 但是,當我嘗試df['time'] = df['time'].apply(lambda x: x.to_pydatetime())時,它不起作用。 元素仍然是時間戳。

我在另一個答案中to_pydatetime不適用於系列或列,因此我還嘗試將列提取為列表,然后將to_pydatetime()應用於其元素(有效,每個元素都轉換為datetime.datetime ) 然后將該列表放回數據框中。 但是,當我這樣做時,每個元素都會再次轉換為時間戳...

import pandas as pd

df = pd.DataFrame({'time': [1451602801, 1451606401, 1451610001, 1451613601, 1451617201]})
df['datetime'] = pd.to_datetime(df['time'], unit='s')
print(df)

輸出

         time            datetime
0  1451602801 2015-12-31 23:00:01
1  1451606401 2016-01-01 00:00:01
2  1451610001 2016-01-01 01:00:01
3  1451613601 2016-01-01 02:00:01
4  1451617201 2016-01-01 03:00:01
import pandas as pd

df = pd.DataFrame({'time': [1451602801, 1451606401, 1451610001, 1451613601, 1451617201]})
df['datetime'] = pd.to_datetime(df['time'], unit='s')

# Wrap the numpy output as a series and force dtype to object:
df['timestamp'] = pd.Series(df.datetime.dt.to_pydatetime(), dtype='O')
print(type(df.datetime[0]))
print(type(df.timestamp[0]))

輸出:

<class 'pandas._libs.tslibs.timestamps.Timestamp'>
<class 'datetime.datetime'>

暫無
暫無

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

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