我有一个YYYY-MM格式的熊猫时期对象。我正试图从中获得每月的最后一天。
df['Date']=(df.MONTH).end_time
我得到了错误:
“系列”对象没有属性“结束时间”
我该如何解决?
答案 0 :(得分:2)
尝试使用MonthEnd
s=pd.Series('2019-01')
pd.to_datetime(s,format='%Y-%m')+pd.tseries.offsets.MonthEnd()
Out[113]:
0 2019-01-31
dtype: datetime64[ns]
答案 1 :(得分:2)
normalize
首先要意识到的是,对于pandas.Series
,您可以通过.dt
accessor访问datetime和timedelta函数。这就是让您进入end_time
的原因。但是,这样可以为您提供最后一个日期以及最后一个可能的时间部分。这可能超出您的议价范围。如果您真的只想要日期。您可以使用normalzie
将时间转换为午夜。
日期时间的时间部分将转换为午夜,即00:00:00。这在时间无关紧要的情况下很有用。长度不变。时区不受影响。
此方法在具有.dt访问器下的datetime值的Series上,以及直接在Datetime Array / Index上可用。
df = pd.DataFrame(dict(MONTH=[pd.Period('2019-01')]))
normalize
df.MONTH.dt.end_time.dt.normalize()
0 2019-01-31
Name: MONTH, dtype: datetime64[ns]
normalize
0 2019-01-31 23:59:59.999999999
Name: MONTH, dtype: datetime64[ns]