我还是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
正确的方法是什么?谢谢。
答案 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')