我正在尝试使用不同列(例如年和月)中的值作为字符串字段来创建类型列。考虑到每月的第一天,即第一天,天是一个静态数字。
示例:
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版本。请帮忙。
答案 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]