嗨,我不是 python 專家,我仍然是使用 pandas 和處理資料的初學者。我有一個帶有列時間戳的 df。列中的日期時間如下圖所示:
2021-09-07 16:36:14 UTC
2021-09-04 15:31:44 UTC
2021-07-15 06:49:47.320081 UTC
2021-09-07 14:55:55.353145 UTC
我希望只有日期和時間,最后沒有 UTC 文本,秒后沒有小數,最后將資料幀保存在csv 檔案中。基本上我想要這種格式的列:
2021-09-07 16:36:14
2021-09-04 15:31:44
2021-07-15 06:49:47
2021-09-07 14:55:55
我嘗試了這兩個功能:
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%Y-%m-%d %H:%M:%S %Z', errors='coerce')
df['timestamp'] = df['timestamp'].dt.strftime('%Y-%m-%d %H:%M:%S')
我解決了一半的問題。第二個之后沒有小數的日期時間得到修復,但有小數的日期時間為空,您可以找到以下示例:
2021-09-07 16:36:14
2021-09-04 15:31:44
請問有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
嘗試提取您想要的欄位部分。
df['timestamp'] = pd.to_datetime(df['timestamp'].str[:19])
print(df)
print(df.dtypes.
timestamp
0 2021-09-07 16:36:14
1 2021-09-04 15:31:44
2 2021-07-15 06:49:47
3 2021-09-07 14:55:55
timestamp datetime64[ns]
dtype: object
uj5u.com熱心網友回復:
您可以取前 20 個字符:
df['timestamp'] = pd.to_datetime(df['timestamp'].str[:19])
print(df)
# Output
timestamp
0 2021-09-07 16:36:14
1 2021-09-04 15:31:44
2 2021-07-15 06:49:47
3 2021-09-07 14:55:55
如果要保留時區資訊 (UTC),則只能洗掉微秒部分:
df['timestamp']= pd.to_datetime(df['timestamp'].str.replace('\.\d ', '', regex=True))
print(df)
# Output
timestamp
0 2021-09-07 16:36:14 00:00
1 2021-09-04 15:31:44 00:00
2 2021-07-15 06:49:47 00:00
3 2021-09-07 14:55:55 00:00
uj5u.com熱心網友回復:
試試看parser,因為它可以采用不同的格式作為輸入
from dateutil import parser
# df['timestamp'] = parser.parse(df['timestamp'])
date = parser.parse("2021-07-15 06:49:47.320081 UTC")
print(date)
2021-07-15 06:49:47.320081 00:00
或者這個輸出
# Which would imply
# df['timestamp'] = parser.parse(df['timestamp']).strftime("%F %T")
print(date.strftime("%F %T"))
2021-07-15 06:49:47
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442404.html
上一篇:計算上一年的第N天
