python - Pandas - 处理日期格式转换的更好方法
问题描述
我将输入日期作为 YYYY/MM/DD 格式的对象类型,我想在最后将其转换为 MM/DD/YYYY 以报告用例。
提交的日期有多种转换,因此我最初使用以下代码从对象类型转换为日期类型。有基于提交日期的额外转换,例如:过滤特定日期范围...
df_source_data['date'] = pd.to_datetime(df_source_data['date'])
最后,我需要数据框中的最后一组列(作为列表维护在配置中),包括日期,但是我需要 MM/DD/YYYY 格式的日期字段。
final_columns=['date','column1','column2','column3'] # config entry
df_final_data[final_columns] # final select for reporting
我可以使用 strftime 转换日期格式,如下所示,但是有没有更好的方法来执行此操作,而不是再次添加单独的行以将文件转换为所需的格式(即首先从对象类型转换为日期类型,应用过滤器并在结束将日期转换为所需的格式),而不是以某种方式作为配置列表的一部分或代码中的任何更好的方式出现?
df_final_data['date']=df_final_data['date'].dt.strftime('%m/%d/%Y')
解决方案
有没有更好的方法来做到这一点,而不是再次添加单独的行来将文件转换为所需的格式(即首先从对象类型转换为日期类型,应用过滤器,最后将日期转换为所需的格式)?TLDR 编号
df_source_data['date'] = pd.to_datetime(df_source_data['date']).dt.strftime('%m/%d/%Y')
这将立即为您提供所需的格式,但是如果您在它们之间应用日期时间转换,它们仍然是 pandas 中的字符串对象,严重限制了您的日期时间过滤。例如,假设您想子集到六月,然后立即转换为您必须做的所需字符串输出方式
df_source_data[df_source_data['date'].str[0:2] == '06']
而不仅仅是能够做
df_source_data[df_source_data['date'].dt.month == 6]
我建议按照您所说的首先执行 to_datetime 转换,然后在最后转换为您想要的格式。
df_source_data['date'] = pd.to_datetime(df_source_data['date'])
...
df_final_data['date']=df_final_data['date'].dt.strftime('%m/%d/%Y')
推荐阅读
- string - 将字符串的索引与字符进行比较
- java - 如何修复运行 Hadoop 程序的 Eclipse 中的 InputBootStrapper 错误?
- jquery - 具有内容类型应用程序/八位字节流的 AJAX 响应
- algorithmic-trading - Amibroker AFL 代码 Buy Sell 状态未在 if 条件下获取
- vb.net - 过滤没有绑定源的datagridview副本
- ruby - 需要帮助了解 Ruby 动态编程
- r - 需要 Vif 值而不是 gvif
- ios - 在 iOS 中加载旁遮普语文本
- javascript - 如何创建延时模式(最好使用 HTML、JQuery、CSS)
- terraform - Terraform DigitalOcean 水滴标签到群标签