pandas.to_datetime(String)中的错误

时间:2018-06-27 03:57:23

标签: python pandas

我正在尝试使用不同列(例如年和月)中的值作为字符串字段来创建类型列。考虑到每月的第一天,即第一天,天是一个静态数字。

示例:

year . month
2015 . 12
2016 . 1
2016 . 2

我尝试了以下方法来创建“日期”列,但失败了

df['Date'] = pd.to_datetime(dict(year=df['year'],month=df['month'],day=1))

df['Date'] = pd.to_datetime(str(month)+str(month)+str(1),format=%Y%m%d)

df['Date'] = df.apply(lambda x:dt.strptime(str(month)+str(month)+str(1)),format=%Y%m%d)

以上方法均无济于事。由于群集要求使用熊猫0.17版本。请帮忙。

1 个答案:

答案 0 :(得分:1)

每个月的第一天?容易。

pd.to_datetime(df.assign(day=1))

0   2015-12-01
1   2016-01-01
2   2016-02-01
dtype: datetime64[ns]

如果遇到转换错误,请尝试添加errors='coerce'参数:

pd.to_datetime(df.assign(day=1))

这里要注意的是pd.to_datetime在使用DataFrames时,至少需要年,月和日列。

或者,将单个字符串列传递给to_datetime

pd.to_datetime(df.assign(day=1).astype(str).agg('-'.join, axis=1))
# pd.to_datetime(df[['col1', 'col2']].assign(day=1).astype(str).agg('-'.join, axis=1))

0   2015-12-01
1   2016-01-01
2   2016-02-01
dtype: datetime64[ns]