Pandas中的字符串和时间转换与格式化

这篇具有很好参考价值的文章主要介绍了Pandas中的字符串和时间转换与格式化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

格式化某一列的时间为字符串

如果想要格式化某一列中的时间,可以使用 pandasto_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 DataFrame

See 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()就可以了。

这里不会出现错误。文章来源地址https://www.toymoban.com/news/detail-442835.html

# 把列转为时间格式
data_new.listed_date = pd.to_datetime(data_new.listed_date)
data_new.delisted_date = pd.to_datetime(data_new.delisted_date)

到了这里,关于Pandas中的字符串和时间转换与格式化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go 中的格式化字符串`fmt.Sprintf()` 和 `fmt.Printf()`

    在 Go 中,可以使用 fmt.Sprintf() 和 fmt.Printf() 函数来格式化字符串,这两个函数类似于 C 语言中的 scanf 和 printf 函数。 fmt.Sprintf() 函数返回一个格式化后的字符串,而不是将其打印到标准输出流中。下面是一个例子: 输出: 在这个例子中,使用了 %s 和 %d 格式化动词来格式化字

    2024年02月09日
    浏览(39)
  • Python中f‘‘、str.format()和str%()的字符串格式化详解(2)------格式占位符的使用,日期、时间格式使用

    目录 四、 f\\\'\\\'、str.format()和str%()格式化表达式中格式占位符的使用 1、实现进制(或格式)的转换与冒号: 2、实现对象的字符串形式转换与感叹号! 3、为对象指定宽度或精度 4、对对象取百分比 5、为对象增加正号+或负号- 6、为对象增加标志(flags) 五、 f\\\'\\\'、str.format()和str%()格式化

    2024年02月04日
    浏览(44)
  • 55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

    使用pandas.DataFrame的方法to_json(),可以将pandas.DataFrame转为JSON格式字符串(str类型)或者输出(保存)为JSON格式文件。 在此,对以下内容进行说明。有关其他参数,请参阅上面的官方文档。 pandas.DataFrame.to_json() 的基本用法 转换为JSON格式字符串 输出(保存)为JSON格式文件 文

    2024年02月15日
    浏览(29)
  • Db2的时间转换(字符串,时间戳,Unix时间戳)

    Ubuntu 22.04 Db2 11.5.0 参见 https://www.ibm.com/docs/en/db2/11.5?topic=list-datetime-values Db2有3种时间类型: DATE :例如 03/20/2023 ,当前日期的special register为 CURRENT DATE TIME :例如 21:23:23 ,当前时间的special register为 CURRENT TIME TIMESTAMP :例如 2023-03-20-21.23.49.513704 ,当前时间戳的special register为

    2024年02月08日
    浏览(47)
  • Flink SQL 时区 -- 时间字符串转时间戳并转换时区

    将时间字符串格式化,转变成时间戳,再加8小时后写入clickhouse (该方法默认精确度为秒,不适用毫秒) (1)UNIX_TIMESTAMP 作用:将时间字符串转换成时间戳 用法:UNIX_TIMESTAMP(STRING datestr, STRING format) (2)CONVERT_TZ 作用:转换时区 用法:CONVERT_TZ(string1, string2, string3) (实测仅获

    2024年02月04日
    浏览(41)
  • SQL Server日期时间与字符串之间的转换

    1、使用函数CONVERT: 2、参数说明 expression :任何有效的SQL表达式。 data_type :目标数据类型。 这包括 xml、bigint 和sql_variant 。 不能使用别名数据类型。 length :指定目标数据类型长度的可选整数,适用于允许用户指定长度的数据类型。例如:nchar、nvarchar、char、varchar、binary

    2024年02月06日
    浏览(47)
  • SQL Server日期时间字符串的处理和转换

    在SQL Server中,您可以使用T-SQL函数进行日期时间字符串的处理和转换。要判断一个日期字符串是否包含时间信息,可以使用T-SQL内置的函数CONVERT和TRY_CONVERT,并指定时间格式。 例如,假设有一个名为date_string的日期字符串,您可以使用以下代码来判断它是否包含时间信息: 如

    2024年02月16日
    浏览(43)
  • pg使用sql将文本字符串转换成时间格式

    使用 PostgreSQL 数据库的 SQL 查询语句将文本字符串转换为时间格式,可以使用 to_timestamp 函数。 假设您的文本字符串时间格式为 “yyyy-MM-dd HH:mm:ss”,您可以使用以下 SQL 查询来转换: 这将返回一个时间戳类型的结果,其中包含从文本字符串转换而来的时间。 您可以在您的

    2024年02月12日
    浏览(56)
  • JS时间对象(Date)与字符串(String)相互转换

    运行结果: D:DevEnvironmentNodeJsnode.exe D:MyProjectscoding-studysrcmainresourcesstaticutils.js format1 = 2022年09月23日 23:24:39.836 星期五 第3季度 format2 = 2022年9月23日 11:24:39.836 am 周五 第3季度 format3 = 2022-09-23 23:24:39.836 am 五 Process finished with exit code 0 运行结果: D:DevEnvironmentNodeJsnode.exe

    2024年02月16日
    浏览(40)
  • 前端中不同格式的日期相互转换(字符串、时间戳)js相关

    在项目中遇到了,需要实现字符串和Unix时间戳的相互转换,随手记录一下。 我使用的组件库为Naive UI,涉及到的组件为日期选择器(Date Picker)。作者在文档中写道: 实话说我不喜欢这个 feature,因为多数情况下,传递时间字符串不是个最佳实践。但是现实世界是复杂的,我

    2024年02月02日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包