我对 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 日期时间格式的一列中。
我正在尝试:
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
正确的做法是什么?谢谢。
最佳答案
如有必要,您需要转换为 str
,然后 zfill
月份列并将其以有效格式传递给 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')
关于python - 使用 to_datetime 转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206921/