如何使用pandas.to_datetime处理“奇怪”的字符串格式

我正在尝试将pandas数据框中的一列从字符串类型转换为日期时间类型,使用的是pandas.to_datetime。这列的值格式如下:

Q1’17

其中’Q’表示年份的季度,’17’表示2017年。

该列还包含空值(我可以删除日期为空的整行)。

我尝试通过去除季度部分并只考虑年份来解决这个问题,但无法将例如16转换为2016年,尝试的方法如下:

df_cpu["Launch_Date"] = [str(x) for x in df_cpu["Launch_Date"]]df_cpu["Launch_Date"] = [x[3:5] for x in df_cpu["Launch_Date"]]df_cpu["Launch_Date"] = [int(x) for x in df_cpu["Launch_Date"]]df_cpu["Launch_Date"] = pd.to_datetime(df_cpu["Launch_Date"],    format('%Y'))

这种方法也不奏效:

df_cpu["Launch_Date"] = pd.to_datetime(df_cpu["Launch_Date"], format('Q*\'%Y'))

因为我得到了以下错误:

ValueError: (‘Unknown string format:’, “Q3’16”)

我应该如何解决这个问题?

如果值是“Q1’16”,我希望得到的输出是“01-01-2016”。


回答:

考虑到以下几点:

1) 提供的数据:

df_cpu = pd.DataFrame(["Q1'17","Q3'16"], columns=['Launch_Date'])

2) 发布日期列的长度始终为5;

你可以使用pd.offsets.QuarterBegin()来将季度添加到年初的第一天:

>> pd.to_datetime(df_cpu.Launch_Date.str[3:5],format='%y') + np.multiply(pd.offsets.QuarterBegin(startingMonth=1), df_cpu.Launch_Date.str[1:2].values.astype(int)-1)0   2017-01-011   2016-07-01Name: Launch_Date, dtype: datetime64[ns]

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注