使用to_datetime转换日期

时间:2015-12-10 16:26:15

标签: python datetime pandas

我还是Python的新手,所以请原谅我的基本问题。

重置pandas分组数据帧后,我得到以下内容:

    year    month   pl
0   2010    1   27.4376
1   2010    2   29.2314
2   2010    3   33.5714
3   2010    4   37.2986
4   2010    5   36.6971
5   2010    6   35.9329

我想将年份和月份合并为pandas datetime格式的一列。

我在尝试:

C3['date']=pandas.to_datetime(C3.year + C3.month, format='%Y-%m')

但它给了我一个这样的日期:

    year    month   pl  date
0   2010    1   27.4376 1970-01-01 00:00:00.000002011

正确的方法是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

如有必要,您需要转换为str,然后转换为zfill月份col并将其转换为有效格式to_datetime

In [303]:
df['date'] = pd.to_datetime(df['year'].astype(str) + df['month'].astype(str).str.zfill(2), format='%Y%m')
df

Out[303]:
   year  month       pl       date
0  2010      1  27.4376 2010-01-01
1  2010      2  29.2314 2010-02-01
2  2010      3  33.5714 2010-03-01
3  2010      4  37.2986 2010-04-01
4  2010      5  36.6971 2010-05-01
5  2010      6  35.9329 2010-06-01

如果不需要转换,则以下内容应该有效:

df['date'] = pd.to_datetime(df['year'] + df['month'].str.zfill(2), format='%Y%m')

您的尝试失败,因为它将该值视为纪元时间:

In [305]:
pd.to_datetime(20101, format='%Y-%m')

Out[305]:
Timestamp('1970-01-01 00:00:00.000020101')