首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Pandas:将日期转换为文本,例如2018年8月--> 08-2018或01-08-2018

Python Pandas:将日期转换为文本,例如2018年8月--> 08-2018或01-08-2018
EN

Stack Overflow用户
提问于 2019-01-31 01:49:15
回答 2查看 51关注 0票数 0

转换日期,例如2018年8月--> 01-08-2018 ??

下面是我的示例输入

代码语言:javascript
复制
id      year_pass
1       Aug 2018 - Nov 2018
2       Jul 2017 - Oct 2017

输出应为:

代码语言:javascript
复制
id      year_pass
1       01-08-2018
2       01-07-2017 

代码语言:javascript
复制
id      year_start    year_end
1       01-08-2018    01-11-2018
2       01-07-2018    01-10-2018
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-31 01:59:18

这里有一个解决方案。

代码语言:javascript
复制
import pandas as pd
import numpy as np
from datetime import datetime

# creating the sample dataframe
df = pd.DataFrame([[0.57, 'Aug 2018 - Nov 2018'], 
                   [0.11, 'Jul 2017 - Oct 2017']], 
                   columns=['id', 'year_pass'])

# splitting the date column on the '-'
year_start, year_end = df['year_pass'].str.split('-')
df.drop('year_pass', axis=1, inplace=True)

# assigning the split values to columns
df['year_start'] = year_start
df['year_end'] = year_end

# converting to datetime objects
df['year_start'] = pd.to_datetime(df['year_start'])
df['year_end'] = pd.to_datetime(df['year_end'])
票数 0
EN

Stack Overflow用户

发布于 2019-01-31 02:00:11

您可以首先像这样拆分year_pass列:

代码语言:javascript
复制
new_df = df.year_pass.str.split(' - ')

new_df1 = new_df.apply(pd.Series)

new_df2 = pd.to_datetime(new_df1[0])

然后,您可以将结果数据帧合并到实际的数据帧中。要将其放在一行代码中:

代码语言:javascript
复制
new_df = pd.to_datetime(df.year_pass.str.split(' - ').apply(pd.Series)[0])

日期格式应为YYYY-MM-DD,而不是DD-MM-YYYY

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54446596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档