網站首頁 編程語言 正文
Pandas 提供了若干個函數來格式化時間。
把字符串轉為時間格式
其中,最常用的是 to_datetime() 函數。
可以使用 to_datetime() 函數將一個字符串解析為時間,并指定字符串的格式。例如:
import pandas as pd
# 將字符串 "2022-01-01" 轉為時間格式
time = pd.to_datetime("2022-01-01", format="%Y-%m-%d")
print(time)
輸出:
<class 'pandas._libs.tslibs.timestamps.Timestamp'>:2022-01-01 00:00:00
把時間格式化為字符串
還可以使用 strftime() 函數將時間格式化為字符串。例如:
import pandas as pd
# 將時間 "2022-01-01 00:00:00" 格式化為字符串
time_str = pd.to_datetime("2022-01-01 00:00:00").strftime("%Y-%m-%d")
print(time_str)
輸出:
<class 'str'>:2022-01-01
格式化某一列的時間為字符串
如果想要格式化某一列中的時間,可以使用 pandas 的 to_datetime 函數。
例如,假設你有一個名為 df 的數據,并且你想要格式化其中一列名為 “Date” 的時間列,你可以這樣做:
df['Date'] = pd.to_datetime(df['Date'])
這將會將 “Date” 列中的所有時間轉換為 Pandas 的時間數據類型。你也可以指定一個特定的時間格式,例如:
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')
這將會將 “Date” 列中的所有時間按照指定的格式轉換為 Pandas 的時間數據類型。
遇到的錯誤
但是,我在修改以下數據的格式時,想要把listed_date和delisted_date格式化為字符串,出現了錯誤。
? ? ? sec_id ?sec_name ? ? ? ? ? ? ? listed_date ? ? ? ? ? ? delisted_date
2716 ?hc2301 ?熱軋卷板2301 2022-01-18 00:00:00+08:00 2023-01-16 00:00:00+08:00
2717 ?hc2302 ?熱軋卷板2302 2022-02-16 00:00:00+08:00 2023-02-15 00:00:00+08:00
2718 ?hc2303 ?熱軋卷板2303 2022-03-16 00:00:00+08:00 2023-03-15 00:00:00+08:00
2719 ?hc2304 ?熱軋卷板2304 2022-04-18 00:00:00+08:00 2023-04-17 00:00:00+08:00
2720 ?hc2305 ?熱軋卷板2305 2022-05-17 00:00:00+08:00 2023-05-15 00:00:00+08:00
2721 ?hc2306 ?熱軋卷板2306 2022-06-16 00:00:00+08:00 2023-06-15 00:00:00+08:00
2722 ?hc2307 ?熱軋卷板2307 2022-07-18 00:00:00+08:00 2023-07-17 00:00:00+08:00
2723 ?hc2308 ?熱軋卷板2308 2022-08-16 00:00:00+08:00 2023-08-15 00:00:00+08:00
2724 ?hc2309 ?熱軋卷板2309 2022-09-16 00:00:00+08:00 2023-09-15 00:00:00+08:00
2725 ?hc2310 ?熱軋卷板2310 2022-10-18 00:00:00+08:00 2023-10-16 00:00:00+08:00
2726 ?hc2311 ?熱軋卷板2311 2022-11-16 00:00:00+08:00 2023-11-15 00:00:00+08:00
2727 ?hc2312 ?熱軋卷板2312 2022-12-16 00:00:00+08:00 2023-12-15 00:00:00+08:00
格式化代碼如下:
data_choose['listed_date'] = data_choose['listed_date'].dt.strftime('%Y-%m-%d %H:%M:%S')
data_choose['delisted_date'] = data_choose['delisted_date'].dt.strftime('%Y-%m-%d %H:%M:%S')
報錯:
SettingWithCopyWarning: ? ? ?
A value is trying to be set on a copy of a slice from a DataFrameSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
推測錯誤原因:
不能直接修改原來的dataframe上的列,然后再替換原來的列數據。
于是,復制了一個數據副本:
data_new = data_choose.copy()
data_new['listed_date'] = data_choose['listed_date'].dt.strftime('%Y-%m-%d %H:%M:%S')
data_new['delisted_date'] = data_choose['delisted_date'].dt.strftime('%Y-%m-%d %H:%M:%S')
在復制的數據上進行修改,果然沒再報錯。
輸出:
? ? ? sec_id ?sec_name ? ? ? ? ?listed_date ? ? ? ?delisted_date
2716 ?hc2301 ?熱軋卷板2301 ?2022-01-18 00:00:00 ?2023-01-16 00:00:00
2717 ?hc2302 ?熱軋卷板2302 ?2022-02-16 00:00:00 ?2023-02-15 00:00:00
2718 ?hc2303 ?熱軋卷板2303 ?2022-03-16 00:00:00 ?2023-03-15 00:00:00
2719 ?hc2304 ?熱軋卷板2304 ?2022-04-18 00:00:00 ?2023-04-17 00:00:00
2720 ?hc2305 ?熱軋卷板2305 ?2022-05-17 00:00:00 ?2023-05-15 00:00:00
2721 ?hc2306 ?熱軋卷板2306 ?2022-06-16 00:00:00 ?2023-06-15 00:00:00
2722 ?hc2307 ?熱軋卷板2307 ?2022-07-18 00:00:00 ?2023-07-17 00:00:00
2723 ?hc2308 ?熱軋卷板2308 ?2022-08-16 00:00:00 ?2023-08-15 00:00:00
2724 ?hc2309 ?熱軋卷板2309 ?2022-09-16 00:00:00 ?2023-09-15 00:00:00
2725 ?hc2310 ?熱軋卷板2310 ?2022-10-18 00:00:00 ?2023-10-16 00:00:00
2726 ?hc2311 ?熱軋卷板2311 ?2022-11-16 00:00:00 ?2023-11-15 00:00:00
2727 ?hc2312 ?熱軋卷板2312 ?2022-12-16 00:00:00 ?2023-12-15 00:00:00
使用apply()和lambda函數
另一種格式化方式,并不會出錯:
# 把日期改為字符串
data_choose.listed_date = data_choose.listed_date.apply(lambda x: x.strftime("%Y-%m-%d %H:%M:%S"))
# 把時間列轉為字符串
data_choose.delisted_date = data_choose.delisted_date.apply(lambda x: x.strftime("%Y-%m-%d %H:%M:%S"))
這里對列使用了apply()和lambda函數,相當于遍歷列的數據進行修改替換。
把某一列轉為時間格式
直接使用pd.to_datetime()就可以了。
這里不會出現錯誤。
# 把列轉為時間格式
data_new.listed_date = pd.to_datetime(data_new.listed_date)
data_new.delisted_date = pd.to_datetime(data_new.delisted_date)
原文鏈接:https://blog.csdn.net/qq_37944726/article/details/128585466
相關推薦
- 2023-07-27 原型和原型鏈條、ES6、前后端交互Ajax
- 2023-03-17 Docker部署Nginx并修改配置文件的兩種方式_docker
- 2023-04-07 C#中將dateTimePicker初始值設置為空_C#教程
- 2022-11-30 React中常見的TypeScript定義實戰教程_React
- 2022-06-12 使用?Docker安裝?Zabbix并配置自定義監控項的過程詳解_docker
- 2023-07-02 Python中星號的五種用法小結_python
- 2023-08-13 uniapp寫一個隨時間變化的預約日期列表
- 2022-10-12 浮動AppBar中的textField焦點回滾問題解決_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支